我有来自Salt-Stack API的以下JSON响应:
{
"return": [{
"<UUID1>": true,
"<UUID2>": "Minion did not return. [No response]",
"<UUID3>": true,
"<UUID4>": false
}]
}
我通常使用地图结构在Go:
中解组type getMinionsStatusResponse struct {
Returns []map[string]bool `json:"return"`
}
但是由于返回错误响应的第二行(以字符串格式)而不是布尔值,我收到以下错误:json: cannot unmarshal string into Go value of type bool
我想知道如何使用encoding/json
包在Golang中编组这种JSON格式?
答案 0 :(得分:2)
对于解组输出不同的动态json,使用接口来解组相同的。它将解组整个json,因为它内部有任何类型的结构。
package main
import (
"fmt"
"encoding/json"
)
func main() {
jsonbytes := []byte(`{
"return": [{
"<UUID1>": true,
"<UUID2>": "Minion did not return. [No response]",
"<UUID3>": true,
"<UUID4>": false
}]
}`)
var v interface{}
if err := json.Unmarshal(jsonbytes, &v); err != nil{
fmt.Println(err)
}
fmt.Println(v)
}