解组动态 JSON Golang

问题描述 投票:0回答:1

我正在尝试解组具有动态字段的 API 响应:

API 响应:

[
{
    "id": "3412345678",
    "userName": "ichigo",
    "sub": "ichi",
    "opnum": "324.45",
    "applyRoot": [
        "Paradise"
    ],
    "prm": [],
    "requestNumber": "",
    "individualStatus": {
        "app-first": {
            "is_running": false,
            "version-stats": [
                {
                    "digit": "1.23.341",
                    "expected_num": 0,
                    "current_num": 0,
                    "type": "queued"
                }
            ],
            "_data": {
                "digit": "12-rated",
                "expected_num": 0,
                "current_num": 0
            },
            "status": "timeout",
            "count": 1
        },
        "app-second": {
            "is_running": false,
            "version-stats": [
                {
                    "digit": "1.23.341",
                    "expected_num": 0,
                    "current_num": 0,
                    "type": "queued"
                }
            ],
            "_data": {
                "digit": "12-rated",
                "expected_num": 0,
                "current_num": 0
            },
            "status": "timeout",
            "count": 1
        }

    }
}
]

我尝试解组 json 的模型是:

type AutoGenerated []struct {
ID               string        `json:"id"`
UserName         string        `json:"userName"`
Sub              string        `json:"sub"`
Opnum            string        `json:"opnum"`
ApplyRoot        []string      `json:"applyRoot"`
Prm              []interface{} `json:"prm"`
RequestNumber    string        `json:"requestNumber"`
IndividualStatus map[string]interface{} `json:"individualAppStatus"`

}

解组 Json 并访问 individualStatus 值的正确方法是什么。

我尝试按照 Unmarshal JSON 使用一些已知和一些未知的字段名称,在这种情况下,我必须删除提到的值(我必须删除的值很大)。请让我知道最好的方法。

谢谢!

json go dynamic unmarshalling
1个回答
0
投票

您可以为

IndividualStatus
定义一个已定义的结构并按如下方式使用。

type IndividualStatus struct {
    IsRunning    bool `json:"is_running"`
    VersionStats []struct {
        Digit       string `json:"digit"`
        ExpectedNum int    `json:"expected_num"`
        CurrentNum  int    `json:"current_num"`
        Type        string `json:"type"`
    } `json:"version-stats"`
    Data struct {
        Digit       string `json:"digit"`
        ExpectedNum int    `json:"expected_num"`
        CurrentNum  int    `json:"current_num"`
    } `json:"_data"`
    Status string `json:"status"`
    Count  int    `json:"count"`
}

type APIResponse []struct {
    IndividualStatus map[string]IndividualStatus
}

您可以解组对此

json
APIResponse
响应并访问每个
IndividualStatus
字段。

如果需要,您可以进一步模块化

IndividualStatus
结构体中的内部字段。

© www.soinside.com 2019 - 2024. All rights reserved.