4

我有来自 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 格式?

4

1 回答 1

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

操场

于 2018-04-25T03:24:22.797 回答