亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在 Go 中將 Json 數據解組到地圖中

在 Go 中將 Json 數據解組到地圖中

Go
慕蓋茨4494581 2023-03-29 16:10:17
我正在處理一個返回 json 數據的 api,例如:    {  "bpi": {    "2018-06-01": 128.2597,    "2018-06-02": 127.3648  },  "disclaimer": "something here.",  "time": {    "updated": "Sep 6, 2013 00:03:00 UTC",    "updatedISO": "2013-09-06T00:03:00+00:00"  }然而,具有伴隨日期的價格數據可以返回動態日期范圍(即可以是從 1 個數據對到 1000 個數據對的任何值)。我試圖只獲取日期和價格對并將它們放入地圖中供以后使用,但我沒有找到一種直接的方法。當我將它放入一個 json-to-go 自動結構生成器中時,它將為定價創建一個靜態的命名結構。這是我動態處理數據的最佳嘗試。我從 http get 的響應主體傳遞一個空接口,具體來說:var unstructuredJSON interface{} json.Unmarshal(body, &unstructuredJSON)并將 unstructuredJSON 傳遞給函數:func buildPriceMap(unstructuredJSON interface{}, priceMap map[string]float64) {jsonBody := unstructuredJSON.(map[string]interface{})for k, v := range jsonBody {    switch vv := v.(type) {    case string:        // Do Nothing    case float64:        priceMap[k] = vv    case interface{}:        buildPriceMap(vv, priceMap)    default:        log.Fatal("Json unknown data handling unmarshal error: ", k, vv)    }}有一個更好的方法嗎?
查看完整描述

1 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

假設您知道頂級鍵,例如bpi,等disclaimer,time并且您正在談論的“動態數據對”是該字段的一部分bpi,并且每個成員的鍵和值類型bpi總是string: decimal number您做某事喜歡....


type APIResp struct {

    BPI        map[string]float64 `json:"bpi"`

    Disclaimer string

    // other fields

}

現在你的每一對都將被正確輸入并包含在APIResp.BPI地圖中。像你已經在做的那樣解組;


var r APIResp

err := json.Unmarshal(body, &r)

// TODO: check err


查看完整回答
反對 回復 2023-03-29
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號