如何在 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)
}

Playground