没有结构的json unmarshalling

时间:2017-05-03 21:25:32

标签: json go

我跟随json

  <img ng-src="{{'data:image/png;charset=utf-8;base64,' + response.data.path}}">

基于给定的answer我试过了

[{"href":"/publication/192a7f47-84c1-445e-a615-ff82d92e2eaa/article/b;version=1493756861347"},{"href":"/publication/192a7f47-84c1-445e-a615-ff82d92e2eaa/article/a;version=1493756856398"}]

我得到空数组并出现以下错误。有什么建议吗?

  

json:无法将数组解组为map类型的Go值[string] * json.RawMessage

2 个答案:

答案 0 :(得分:4)

您可以按照以下方式取消联系[]map[string]interface{}

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

要了解有关解组工作原理的详情,请参阅此处:https://godoc.org/encoding/json#Unmarshal

答案 1 :(得分:0)

您的json是一个数组对象,在encoding/json包裹编组/解组maps到/从json 对象而不是数组,因此您可能希望分配slice of maps

var objs []map[string]*json.RawMessage
if err := json.Unmarshal([]byte(data), &objs); err != nil {
    panic(err)
}

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)
}

https://play.golang.org/p/XM8MmV0gbc

相关问题