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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 Go 中解析數(shù)組元素具有多個(gè)類型的 JSON?

如何在 Go 中解析數(shù)組元素具有多個(gè)類型的 JSON?

Go
Helenr 2022-10-04 15:53:46
如何將 JSON 響應(yīng)從 https://api.twitchinsights.net/v1/bots/online 解析為 Go 中的數(shù)組并循環(huán)訪問(wèn)每個(gè)條目?我不理解結(jié)構(gòu),因?yàn)闆](méi)有鍵只有值...任何人都可以幫助并解釋這是如何工作的嗎?我已經(jīng)映射了它,但后來(lái)我得到了類似的東西map[_total:216 bots:[[anotherttvviewer 67063 1.632071051e+09] [defb 26097 1.632071051e+09] [commanderroot 17531 1.632071048e+09] [apparentlyher 16774 1.63207105e+09]...但我無(wú)法遍歷地圖。
查看完整描述

1 回答

?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊

由于您正在使用的 API 返回的數(shù)據(jù)可以是字符串或數(shù)字(在數(shù)組屬性中),因此您需要將其用作該數(shù)組的每個(gè)元素的類型,因?yàn)榭战涌冢╤ttps://tour.golang.org/methods/14)在運(yùn)行時(shí)適用于任何類型。bots[]interface{}


type response struct {

    Bots  [][]interface{} `json:"bots"`

    Total int             `json:"_total"`

}

然后,在循環(huán)訪問(wèn)切片中的每個(gè)項(xiàng)目時(shí),可以使用反射檢查其類型。


理想的做法是 API 在架構(gòu)中返回?cái)?shù)據(jù),其中每個(gè) JSON 數(shù)組元素都與其數(shù)組中的其他元素具有相同的 JSON 類型。這將更容易解析,特別是使用像Go這樣的靜態(tài)類型語(yǔ)言。


例如,API 可以返回如下數(shù)據(jù):


{

  "bots": [

    {

      "stringProp": "value1",

      "numberProps": [

        1,

        2

      ]

    }

  ],

  "_total": 1

}

然后,您可以編寫(xiě)一個(gè)表示 API 響應(yīng)的結(jié)構(gòu),而無(wú)需使用空接口:


type bot struct {

    StringProp  string    `json:"stringProp"`

    NumberProps []float64 `json:"numberProps"`

}


type response struct {

    Bots  []bot `json:"bots"`

    Total int   `json:"_total"`

}

但有時(shí)您無(wú)法控制正在使用的API,因此您需要愿意以更動(dòng)態(tài)的方式解析響應(yīng)中的數(shù)據(jù)。如果您確實(shí)可以控制 API,則應(yīng)考慮以這種方式返回?cái)?shù)據(jù)。


查看完整回答
反對(duì) 回復(fù) 2022-10-04
  • 1 回答
  • 0 關(guān)注
  • 81 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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