1 回答

TA贡献1866条经验 获得超5个赞
JSON Unmarshal 是否不支持 JSON 数组的映射,只支持对象?
encoding/json Unmarshal 函数支持所有 JSON 实体,包括数组。Unmarshal 文档描述了如何将 JSON 实体映射到 Go 值。
该问题将 JSON 解码为指向 json 的指针切片的映射。原始消息。打印的输出显示指针切片。
使用取消引用运算符取消引用切片中的指针:*
for k, values := range objmap {
for _, v := range values {
fmt.Printf("%s: %s\n", k, *v) // note the * on this line
}
}
A 是直接从 JSON 文档获取的字节切片。您必须再次取消元帅才能获得 Go 值。使用字符串转换将 a 转换为 :json.RawMessagejson.RawMessagestring
for k, values := range objmap {
for _, v := range values {
s := string(*v) // * dereferences pointer, string() converts to string
fmt.Printf("%s: %s\n", k, s)
}
}
指针不是必需的。像这样简化代码:
var objmap map[string][]json.RawMessage // * removed on this line
err := json.Unmarshal(body, &objmap)
if err != nil {
log.Fatal(err)
}
fmt.Println(objmap)
for k, values := range objmap {
for _, v := range values {
fmt.Printf("%s: %s\n", k, v) // ... and this line
}
}
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报