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

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

將包含動(dòng)態(tài)鍵的 REST API 返回的 JSON 映射到 Golang 中的結(jié)構(gòu)

將包含動(dòng)態(tài)鍵的 REST API 返回的 JSON 映射到 Golang 中的結(jié)構(gòu)

Go
素胚勾勒不出你 2021-12-07 17:08:15
我正在從我的 Go 程序調(diào)用 REST API,它在請(qǐng)求中獲取n個(gè)酒店 ID,并將它們的數(shù)據(jù)作為 JSON 返回。當(dāng)說我在請(qǐng)求中傳遞 2 個(gè) id 時(shí),響應(yīng)如下所示, 1018089108070373346 和 2017089208070373346 :{ "data": {  "1018089108070373346": {    "name": "A Nice Hotel",    "success": true   },  "2017089208070373346": {    "name": "Another Nice Hotel",    "success": true   }  }}由于我是 Golang 的新手,因此我使用http://mholt.github.io/json-to-go/上提供的 JSON Go 工具來獲取上述響應(yīng)的結(jié)構(gòu)表示。我得到的是:type Autogenerated struct {    Data struct {        Num1017089108070373346 struct {            Name string `json:"name"`            Success bool `json:"success"`        } `json:"1017089108070373346"`        Num2017089208070373346 struct {            Name string `json:"name"`            Success bool `json:"success"`        } `json:"2017089208070373346"`    } `json:"data"`}我不能使用上面的結(jié)構(gòu),因?yàn)槲颐看蝹鬟f的實(shí)際 id 值和 id 數(shù)量可能不同,返回的 JSON 將具有不同的鍵。這種情況如何映射到 struct ?
查看完整描述

2 回答

?
婷婷同學(xué)_

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

使用地圖:


type Item struct {

    Name string `json:"name"`

    Success bool `json:"success"`

type Response struct {

    Data map[string]Item `json:"data"`

}


查看完整回答
反對(duì) 回復(fù) 2021-12-07
?
慕尼黑的夜晚無繁華

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

下面是一些使用 Mellow Marmots 答案的示例代碼,并展示了如何迭代響應(yīng)中的項(xiàng)目。


測(cè)試文件


{

 "data": {

  "1018089108070373346": {

    "name": "A Nice Hotel",

    "success": true

   },

  "2017089208070373346": {

    "name": "Another Nice Hotel",

    "success": true

   }

  }

}

測(cè)試去


package main


import (

    "encoding/json"

    "fmt"

    "os"

)


// Item struct

type Item struct {

    Name    string `json:"name"`

    Success bool   `json:"success"`

}


// Response struct

type Response struct {

    Data map[string]Item `json:"data"`

}


func main() {

    jsonFile, err := os.Open("test.json")

    if err != nil {

        fmt.Println("Error opening test file\n", err.Error())

        return

    }


    jsonParser := json.NewDecoder(jsonFile)

    var filedata Response

    if err = jsonParser.Decode(&filedata); err != nil {

        fmt.Println("Error while reading test file.\n", err.Error())

        return

    }


    for key, value := range filedata.Data {

        fmt.Println(key, value.Name, value.Success)

    }

}

哪些輸出:


1018089108070373346 A Nice Hotel true

2017089208070373346 Another Nice Hotel true


查看完整回答
反對(duì) 回復(fù) 2021-12-07
  • 2 回答
  • 0 關(guān)注
  • 222 瀏覽
慕課專欄
更多

添加回答

舉報(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)