没有结构的json解组

use*_*195 6 json go

我正在关注 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


mko*_*iva 1

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