为了账号安全,请及时绑定邮箱和手机立即绑定

用嵌套数组编组 JSON?

用嵌套数组编组 JSON?

Go
汪汪一只猫 2022-10-17 19:23:00
我想像这样创建 JSON:{  "name": "val1",  "version": "val2",  "type": "val3",  "settings": [    "setting1,    "setting2",    "setting3",    [      "option1",      "option2"    ]   ]}但我不知道如何在里面创建嵌套数组settings:package mainimport (        "encoding/json"        "fmt")type Config struct {        Name     string   `json:"name"`        Version  string   `json:"version"`        Type     string   `json:"type"`        Settings []string `json:"settings"`}func main() {        settings := []string{"setting1", "setting2", "setting3"}        options := []string{"option1", "option2"}        setopts := append(settings, options...)        c := &Config{"val1", "val2", "val3", setopts}        j, err := json.Marshal(c)        if err != nil {                panic(err)        }        fmt.Println(string(j))}输出通过 jq 管道传输以提高可读性:$ ./main | jq{  "name": "val1",  "version": "val2",  "type": "val3",  "settings": [    "setting1",    "setting2",    "setting3",    "option1",    "option2"  ]}结果是option1和option2是数组内的值settings,但它们应该在嵌套数组内settings。此外,编组时选项可能并不总是存在,在这些情况下不应创建嵌套数组。我怎样才能做到这一点?
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您在此处显示的输出:


    "setting1",

    "setting2",

    "setting3",

    [

      "option1",

      "option2"

    ]

可以描述为 JSON 字符串或字符串数组。


您可以使用 来建模,并附[]interface{}加到字符串或切片:


type Config struct {

        Name     string        `json:"name"`

        Version  string        `json:"version"`

        Type     string        `json:"type"`

        Settings []interface{} `json:"settings"`

}


func main() {

        settings := []interface{}{

              "setting1", 

              "setting2", 

              "setting3",

              []string{"option1", "option2"},

        }


        c := &Config{"val1", "val2", "val3", settings}


        j, err := json.Marshal(c)

        if err != nil {

                panic(err)

        }


        fmt.Println(string(j))

}

游乐场:https ://go.dev/play/p/8LPAVBPmd8w


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 70 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信