如何在Golang中将JSON解析为变量类型的映射
我从Salt Stack API获得以下JSON响应:如何在Golang中将JSON解析为变量类型的映射,json,go,go-map,Json,Go,Go Map,我从Salt Stack API获得以下JSON响应: { "return": [{ "<UUID1>": true, "<UUID2>": "Minion did not return. [No response]", "<UUID3>": true, "<UUID4>": false }] } 但是由于返回错误响应的第二行(以字符串格式)而不是布尔值,我得到了以下
{
"return": [{
"<UUID1>": true,
"<UUID2>": "Minion did not return. [No response]",
"<UUID3>": true,
"<UUID4>": false
}]
}
但是由于返回错误响应的第二行(以字符串格式)而不是布尔值,我得到了以下错误:json:无法将字符串解组为bool类型的Go值
我想知道如何使用编码/JSON
包在Golang中整理这个JSON格式?用于解组输出不同的动态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)
}
主程序包
进口(
“fmt”
“编码/json”
)
func main(){
jsonbytes:=[]字节(`{
“回报”:[{
“”没错,
“”:“仆从未返回。[无响应]”,
“”没错,
“”错误
}]
}`)
var v接口{}
如果err:=json.Unmarshal(jsonbytes,&v);err!=nil{
fmt.Println(错误)
}
fmt.Println(五)
}
我能否仅对地图值使用界面
?因为除了映射值类型之外,其他所有内容都是固定的。是的,您也可以这样做。但这是一个数组,对于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)
}