第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang Json 取消使用多個動態(tài)命名字段進(jìn)行取消分組

Golang Json 取消使用多個動態(tài)命名字段進(jìn)行取消分組

Go
慕桂英3389331 2022-08-24 16:53:35
我有以下需要解碼的Json結(jié)構(gòu),我不確定取消編組的正確方法。var b = []byte(`{    "Card:5417871461137421886": {        "applicationUUID": "5417871461137421886",        "commit": "test_commit",        "lastSeen": "test_lastSeen",        "localUUID": "E4:F5:13:8E:F5:43",        "progress": "3.5",        "externalUUID": "test_externalUUID",        "state": "test_state"    },    "Card:5417871461137421886.Color": {        "applicationUUID": "5417871461137421886",        "color": "blue"    }}`)我最初的方法是以某種方式創(chuàng)建一個結(jié)構(gòu),然后取消到結(jié)構(gòu),但由于動態(tài)性質(zhì),我不確定如何實(shí)現(xiàn)這一點(diǎn)。我嘗試過的一種方法是使用并行結(jié)構(gòu),但是我沒有成功地使其正常工作。我有點(diǎn)不知所措,無法找到解決這個問題的好方法,你可以在這里看到我的示例代碼 https://play.golang.org/p/mzMArgo8ta2我無法更改Json的結(jié)構(gòu),因?yàn)樗菑腁PI讀取的。最終,我不想要或不關(guān)心唯一的字段名稱,因?yàn)閼?yīng)用程序 ID 始終作為值列出。如果有一個簡單的方法來刪除所有的Card:Id,我想我可以像往常一樣映射它。
查看完整描述

2 回答

?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個贊

一種選擇可能是延遲解析,直到您知道類型為止。類似下面的內(nèi)容(游樂場):


devices := make(map[string]json.RawMessage)


err := json.Unmarshal(b, &devices)

if err != nil {

    log.Fatal(err)

}


for key, jsonVal:= range devices {

    if len(key) > 5 && key[:5] == "Card:" {

        var dev Device

        err := json.Unmarshal(jsonVal, &dev)

        if err != nil {

            log.Fatal(err)

        }

        fmt.Printf("%#v\n", dev)

    } else if len(key) > 6 && key[:6] == "Color:" {

        var oth Other 

        err := json.Unmarshal(jsonVal, &oth)

        if err != nil {

            log.Fatal(err)

        }

        fmt.Printf("%#v\n", oth)

    }

}

注意:不清楚您要如何處理數(shù)據(jù),因此我現(xiàn)在只是打印結(jié)構(gòu)。它也不太清楚如何識別每個元素的類型(問題中的示例與示例代碼中的示例不同);可能有一些API的文檔可以解釋這一點(diǎn)?。


查看完整回答
反對 回復(fù) 2022-08-24
?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個贊

我會這樣做:


package main


import (

   "encoding/json"

   "fmt"

)


const s = `

{

   "Card:5417871461137421886": {

      "applicationUUID": "5417871461137421886",

      "commit": "test_commit",

      "externalUUID": "test_externalUUID",

      "lastSeen": "test_lastSeen",

      "localUUID": "E4:F5:13:8E:F5:43",

      "progress": "3.5",

      "state": "test_state"

   },

   "Card:5417871461137421886.Color": {

      "applicationUUID": "5417871461137421886",

      "color": "blue"

   }

}

`


func main() {

   var m map[string]struct {

      ApplicationUUID, Color, Commit, ExternalUUID, LastSeen, LocalUUID string

      Progress, State string

   }

   json.Unmarshal([]byte(s), &m)

   fmt.Printf("%+v\n", m)

}

但似乎也會起作用。map[string]map[string]string


查看完整回答
反對 回復(fù) 2022-08-24
  • 2 回答
  • 0 關(guān)注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號