如何在 Golang 中将 JSON 解析为具有变量类型的映射
How to parse a JSON into a map with variable type in Golang
我从 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 格式?
对于输出不同的动态解组 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)
}
我从 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 格式?
对于输出不同的动态解组 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)
}