doubo9799 2014-12-28 13:13
浏览 121
已采纳

将元数据嵌套到JSON中

How do I marshal a nested struct into JSON? I know how to marshal the struct without any nested structs. However when I try to make the JSON response look like this:

{"genre": {"country": "taylor swift", "rock": "aimee"}}

I run into problems.

My code looks like this:

Go:

type Music struct {
  Genre struct { 
    Country string
    Rock string
  }
}

resp := Music{
  Genre: { // error on this line.
    Country: "Taylor Swift",
    Rock: "Aimee",
  },
}

js, _ := json.Marshal(resp)
w.Write(js)

However, I get the error

Missing type in composite literal

How do I resolve this?

  • 写回答

3条回答 默认 最新

  • dreinuqm992401 2014-12-28 13:30
    关注

    Here's the composite literal for your type:

    resp := Music{
        Genre: struct {
            Country string
            Rock    string
        }{ 
            Country: "Taylor Swift",
            Rock:    "Aimee",
        },
    }
    

    playground example

    You need to repeat the anonymous type in the literal. To avoid the repetition, I recommend defining a type for Genre. Also, use field tags to specify lowercase key names in the output.

    type Genre struct {
      Country string `json:"country"`
      Rock    string `json:"rock"`
    }
    
    type Music struct {
      Genre Genre `json:"genre"`
    }
    
    resp := Music{
        Genre{
            Country: "Taylor Swift",
            Rock:    "Aimee",
        },
    }
    

    playground example

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP