转换 JSON 消息的最佳实践

假设我有一个像这样的 JSON 消息:


{

    "aaaa": 14,

    "bbbb": "",

    "cccc": {

        "c1": 121,

        "needed": [

            {

                "_c21": 22.25972,

                "_c22": {

                    "needed1": "123",

                    "needed2": "test"

                }

            },

            {

                "_c21": 22.25972,

                "_c22": {

                    "needed1": "123",

                    "needed2": "test"

                }

            },

            {

                "_c21": 22.25972,

                "_c22": {

                    "needed1": "123",

                    "needed2": "test"

                }

            }

        ]

    }

}

我怎样才能将它转换为类似的东西:


{

    "needed": [{

            "needed1": "123",

            "needed2": "test"

        }, {

            "needed1": "123",

            "needed2": "test"

        }, {

            "needed1": "123",

            "needed2": "test"

        }

    ]

}

在这种情况下,我认为需要迭代来检索needed1和的组件needed2。我还想知道 Golang 处理 nil 和empty 的最佳实践是什么?(和Java一样,在处理数据之前,建议if先使用条件检查每个键)


江户川乱折腾
浏览 122回答 1
1回答

呼唤远方

下面的代码应该可以满足您的需求:package mainimport (    "encoding/json"    "fmt")var input = `{    "aaaa": 142,    "bbbb": "",    "cccc": {        "c1": 121,        "needed": [            {                "_c21": 22.25972,                "_c22": {                    "needed1": "123",                    "needed2": "test"                }            },            {                "_c21": 22.25972,                "_c22": {                    "needed1": "123",                    "needed2": "test"                }            },            {                "_c21": 22.25972,                "_c22": {                    "needed1": "123",                    "needed2": "test"                }            }        ]    }}`type Json struct {    Cccc struct {        NeededList []struct {            C22 needed `json:"_c22"`        } `json:"needed"`    }`json:"cccc"`}type needed struct {    Needed1 string `json:"needed1"`    Needed2 string `json:"needed2"`}func main() {    j := &Json{}    json.Unmarshal([]byte(input), j)    result := make([]needed, 0)    for _, n := range j.Cccc.NeededList {        result = append(result, n.C22)    }    out, _ := json.Marshal(result)    fmt.Println(string(out))}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go