Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Golang中将JSON解析为变量类型的映射_Json_Go_Go Map - Fatal编程技术网

如何在Golang中将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 }] } 但是由于返回错误响应的第二行(以字符串格式)而不是布尔值,我得到了以下

我从Salt Stack API获得以下JSON响应:

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