为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 中解析 Firestore get() 快照 JSON 内容?

如何在 Go 中解析 Firestore get() 快照 JSON 内容?

Go
繁花不似锦 2023-08-07 18:58:20
Firestore 在获取数据时返回map[string]interface{}。如何呈现“详细信息”值?user:{      fname:"john",      lname:"con",      detail:{             address:"Delhi, India",             mob:"0000000009"             }}sn := snap.Data()    var bt []byte    for _, val := range sn {        for _, v := range val {            log.Println("value ", v)        }    }
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

使用json.Unmarshal将 JSON 内容转换为地图。

  jsonString := `{"user":true,"lname":"con","detail":{"address":"Delhi, India","mob":"0000000009"}}`

    aMap := make(map[string]interface{})

    err := json.Unmarshal([]byte(jsonString), &aMap)

    if err != nil {

        fmt.Println("error:", err)

    }

    fmt.Printf("%+v\n", aMap)

    fmt.Printf("Address := %s\n",aMap["detail"].(map[string]interface{})["address"])

https://play.golang.org/p/3133C_sKDf4


查看完整回答
反对 回复 2023-08-07
?
冉冉说

TA贡献1877条经验 获得超1个赞

首先要事。您的 JSON 似乎无效。看起来缺少一些引用。

尝试在此处验证您的示例数据,您会发现它有什么问题。

或者,要将 JSON 解码为映射,您也可以将其解组为结构,只要您提前知道其结构即可。

type User struct {

    FirstName string `json:"fname"`

    LastName  string `json:"lname"`

    Detail    Detail `json:"detail"`

}


type Detail struct {

    Address string `json:"address"`

    Mobile  string `json:"mob"`

}




if err := json.NewDecoder(strings.NewReader(out)).Decode(&u); err != nil {

    log.Fatal(err)

}

完整的工作示例


查看完整回答
反对 回复 2023-08-07
  • 2 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信