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

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

有沒有更好的方法來聲明json變量

有沒有更好的方法來聲明json變量

Go
largeQ 2023-05-04 17:35:59
聲明一個map[string]map[string]...類型的變量并不理想,有沒有更好的方法    snaps := map[string]map[string]map[string]map[string]string{    "distros": {        "aws": {            "eu-west-1": {                "snap-0": "/dev/sdm",            },            "eu-west-2": {                "snap-1": "/dev/sdm",            },        },    },}fmt.Println(snaps["distros"]["aws"]["eu-west-1"])
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

最簡單的方法是使用 type map[string]interface{}。由于空接口interface{}引用任何類型,因此處理 JSON 的任意嵌套性質。


為此,您必須先將文字數據寫為字符串,然后將字符串解析為 Go map。


考慮到這一點,這里是您的示例的重構:


首先:import "encoding/json",然后


snapsStr := `{

? ? "distros": {

? ? ? ? "aws": {

? ? ? ? ? ? "eu-west-1" : {

? ? ? ? ? ? ? ? "snap-0": "/dev/sdm"

? ? ? ? ? ? },

? ? ? ? ? ? "eu-west-2": {

? ? ? ? ? ? ? ? "snap-1": "/dev/sdm"

? ? ? ? ? ? }

? ? ? ? }

? ? }

}`


var snaps map[string]interface{}


json.Unmarshal([]byte(snapsStr), &snaps)

現在snaps如愿以償。


這是 Go 中最通用的 JSON 數據格式,也是 Go JSON 庫處理 JSON 類型的方式之一。

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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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