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

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

將 json 文件編組到地圖中

將 json 文件編組到地圖中

Go
千巷貓影 2023-06-26 17:19:04
我有一個(gè)較大的(10mb)JSON 文件,我試圖將其解組到地圖中,以便在需要時(shí)可以從內(nèi)存中讀取它。我的問(wèn)題是,我無(wú)法弄清楚如何通過(guò) json 中每行的 id 對(duì)地圖進(jìn)行鍵控,即使這是解決問(wèn)題的慣用方法。它包含很多嵌套數(shù)據(jù),但為了簡(jiǎn)單起見(jiàn),它基本上是這樣的:[{"id": "086687173", "count": 5}, {"id": "078382574", "count": 3}]type Item struct {    Id string `json:"id"`    Count int `json:"count"`}data := []Item  // am able to marshal into an arraydata := make(map[string]Item) // cannot unmarshal array into Go value of type map[string]Itembytes, _ := ioutil.ReadFile("./templates/data.json")err := json.Unmarshal(bytes, &data)fmt.Println(data)
查看完整描述

1 回答

?
嚕嚕噠

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

我的問(wèn)題是我不知道如何通過(guò) id 對(duì)地圖進(jìn)行鍵控


您無(wú)法為地圖建立索引,因?yàn)槟鷽](méi)有任何地圖。


您的輸入 JSON 是一個(gè) JSON 數(shù)組,因此您可以將其解組到 Go 切片中。之后你必須自己構(gòu)建一個(gè) Go 地圖。然后您可以通過(guò)以下方式索引該地圖Id:


m := map[string]*Item{}

for i := range data {

    m[data[i].Id] = &data[i]

}


fmt.Println(m)

fmt.Println(m["086687173"])

fmt.Println(m["078382574"])

這將輸出(在Go Playground上嘗試):


[{086687173 5} {078382574 3}] <nil>

map[078382574:0x43015c 086687173:0x430150]

&{086687173 5}

&{078382574 3}

請(qǐng)注意,如果您最初使用指針 slice []*Item,則創(chuàng)建映射會(huì)更簡(jiǎn)單:


m := map[string]*Item{}

for _, item := range data {

    m[item.Id] = item

}

輸出是一樣的。在Go Playground上試試這個(gè)。



查看完整回答
反對(duì) 回復(fù) 2023-06-26
  • 1 回答
  • 0 關(guān)注
  • 181 瀏覽
慕課專(zhuān)欄
更多

添加回答

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