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

如何将标头添加到 JSON 以识别数组值的数组名称

如何将标头添加到 JSON 以识别数组值的数组名称

Go
湖上湖 2023-04-24 16:12:14
我正在尝试查看是否有一种方法(简单方法)可以使用encoding/jsonGO 向 JSON 中的每个数组添加标头。我的意思是说?想要有这样的东西:{     "Dog":[      {           "breed":"Chihuahua",           "color":"brown"      },      {           "breed":"Pug",           "color":"white"      }    ],     "Cat":[     {           "breed":"British",           "color":"white"     },           "breed":"Ragdoll",           "color":"gray"     }    ]}主要思想是在这种情况下有一个“类别”Dog和Cat。我已经有了这个解决方案,但我正在寻找可以改进它的东西。我的代码如下所示:type Dog struct {   Breed string   Color string}type Cat struct {   Breed string   Color string}func main(){   dogs := [...]Dog{       {"Chihuahua", "brown"},       {"Pug", "white"},   }   cats := [...]Cat{        {"British", "white"},        {"Ragdoll", "gray"},   }   c, err := json.MarshalIndent(cats, "", "\t")   if err != nil {       log.Fatal(err)   }   d, err := json.MarshalIndent(dogs, "", "\t")   if err != nil {      log.Fatal(err)   }   fmt.Println("{")   fmt.Printf("    \"Dog\": %v,\n", string(d))   fmt.Printf("    \"Cat\": %v\n}", string(c))}主要想法是将“狗”和“猫”作为新数组,但我想改进我的代码,不要让它看起来像应该的那样“硬编码”,我想知道是否有一种简单的方法添加标题“Dog”和所有数组值,添加标题“Cat”和所有数组值。
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

不需要为狗和猫分别创建json对象。这将导致在编组数据时产生单独的 json 对象。


您尝试的方法基本上是适当且无用的。


方法应该创建一个结果结构,它将 dogs 和 cats 结构作为字段,类型分别作为它们的切片。举个例子:


package main


import (

    "fmt"

    "encoding/json"

    "log"

)


type Result struct{

    Dog []Dog

    Cat []Cat

}


type Dog struct{

   Breed string

   Color string

}


type Cat struct {

   Breed string

   Color string

}


func main(){


   dogs := []Dog{

       {"Chihuahua", "brown"},

       {"Pug", "white"},

   }


   cats := []Cat{

        {"British", "white"},

        {"Ragdoll", "gray"},

   }


   result := Result{

    Dog: dogs,

    Cat: cats,

   } 


   output, err := json.MarshalIndent(result, "", "\t")

   if err != nil {

       log.Fatal(err)

   }

   fmt.Println(string(output))


}

输出:


{

    "Dog": [

        {

            "Breed": "Chihuahua",

            "Color": "brown"

        },

        {

            "Breed": "Pug",

            "Color": "white"

        }

    ],

    "Cat": [

        {

            "Breed": "British",

            "Color": "white"

        },

        {

            "Breed": "Ragdoll",

            "Color": "gray"

        }

    ]

}


查看完整回答
反对 回复 2023-04-24
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

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