如何在golang中嵌套嵌套结构?

问题描述 投票:-6回答:1

我有一个嵌套的结构,我想循环这个结构。请帮我如何循环结构以获得此格式的输出。我已经提到了我正在使用的结构。

预期产出:

    {  
    "PrefcatID":"PREF_001"
    "prefname: :"PREF_name"
    "PrefSubcategory":
        {
        "subcatid":"SUB_PREF_001",
        "PrefcatID":"PREF_001",
        "subcatname":"Sub Category Name 1"
     },
     {  
        "subcatid":"SUB_PREF_002",
        "PrefcatID":"PREF_001",
        "subcatname":"Sub Category Name 2"
     }
     }

Go中的结构:

    type PrefCategory struct {
    PrefcatID           string `json:"PrefcatID"`
    PrefName            string `json:"prefname"`
    Temp_PrefSubcategory []PrefSubcategory `json:"prefSubcategory "`
    }

    type PrefSubcategory struct {
    PrefcatID        string `json:"PrefcatID"`
    SubcatId         string `json:"subcatid"`
    SubCatName       string `json:"subcatname"`
     }
go
1个回答
0
投票

您几乎就在那里,但请注意您的JSON示例中存在一些语法错误。结构几乎也在那里,最终,你只需要构建一个具有预期值和marshal it to JSON的PrefCategory实例:

type PrefCategory struct {
  PrefcatID            string            `json:"PrefcatID"`
  PrefName             string            `json:"prefname"`
  Temp_PrefSubcategory []PrefSubcategory `json:"prefSubcategory"`
}

type PrefSubcategory struct {
  PrefcatID  string `json:"PrefcatID"`
  SubcatId   string `json:"subcatid"`
  SubCatName string `json:"subcatname"`
}

func main() {
  pref := PrefCategory{
    "PREF_001",
    "PREF_name",
    []PrefSubcategory{
      {"SUB_PREF_001", "PREF_001", "Subcategory Name 1"},
      {"SUB_PREF_002", "PREF_001", "Subcategory Name 2"},
    },
  }

  jsonbytes, err := json.MarshalIndent(&pref, "", "  ")
  if err != nil {
    panic(err)
  }
  fmt.Println(string(jsonbytes))
  /*
  {
    "PrefcatID": "PREF_001",
    "prefname": "PREF_name",
    "prefSubcategory": [
      {
        "PrefcatID": "SUB_PREF_001",
        "subcatid": "PREF_001",
        "subcatname": "Subcategory Name 1"
      },
      {
        "PrefcatID": "SUB_PREF_002",
        "subcatid": "PREF_001",
        "subcatname": "Subcategory Name 2"
      }
    ]
  }
  */
}
© www.soinside.com 2019 - 2024. All rights reserved.