我正在关注 json
[{"href":"/publication/192a7f47-84c1-445e-a615-ff82d92e2eaa/article/b;version=1493756861347"},{"href":"/publication/192a7f47-84c1-445e-a615-ff82d92e2eaa/article/a;version=1493756856398"}]
Run Code Online (Sandbox Code Playgroud)
根据给定的答案,我试过以下
var objmap map[string]*json.RawMessage
err := json.Unmarshal(data, &objmap)
Run Code Online (Sandbox Code Playgroud)
我得到了以下错误的空数组。有什么建议?
json:无法将数组解组为 map[string]*json.RawMessage 类型的 Go 值
小智 11
您可以[]map[string]interface{}按如下方式解组到 a :
var objmap map[string]interface{}
if err := json.Unmarshal(data, &objmap); err != nil {
log.Fatal(err)
}
fmt.Println(objmap[0]["href"]) // to parse out your value
Run Code Online (Sandbox Code Playgroud)
要了解有关解组工作原理的更多信息,请参见此处:https : //godoc.org/encoding/json#Unmarshal
你json是一个对象数组,在 Go 中,encoding/json包编组/解组maps到 json对象/从 json 对象而不是数组,因此你可能需要分配 a slice of maps。
var objs []map[string]*json.RawMessage
if err := json.Unmarshal([]byte(data), &objs); err != nil {
panic(err)
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/3lieuNkoUU
如果您不想使用切片,您可以随时将 json 数组包装在一个对象中。
var dataobj = `{"arr":` + data + `}`
var objmap map[string]*json.RawMessage
if err := json.Unmarshal([]byte(dataobj), &objmap); err != nil {
panic(err)
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/XM8MmV0gbc
| 归档时间: |
|
| 查看次数: |
9791 次 |
| 最近记录: |