Firestore在获取数据时返回map[string]interface{}。如何呈现"details“值?
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)
}
}发布于 2019-12-05 14:15:04
使用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"])发布于 2019-12-05 14:33:32
首先要做的是。您的JSON似乎无效。看起来好像少了几个引号。
尝试验证您的示例数据here,您将看到它的问题所在。
或者,将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)
}https://stackoverflow.com/questions/59188728
复制相似问题