doumang20060820 2019-06-03 14:08
浏览 411
已采纳

使用golang生成嵌套的JSON

So what am I doing wrong here, am not really understanding how to generate a nested JSON structure:

I am getting "missing type in composite literal" exception. https://play.golang.org/p/pA1fpbQHbb0

package main

import "fmt"

type FamilyRequestBody struct {
    Family string `json:"family"`
}

type DataRequestBody struct {
    Family FamilyRequestBody `json:"family"`
}

type EventRequestBody struct {
    Account string `json:"account"`
    Player  string `json:"player"`
    Count   int    `json:"count"`
}

type TeamRequestBody struct {
    Account string `json:"account"`
    Team    string `json:"team"`
}

type PlayerRequestBody struct {
    Account string          `json:"account"`
    Team    string          `json:"team"`
    Player  string          `json:"player"`
    Data    DataRequestBody `json:"data"`
}

func main() {
    l := PlayerRequestBody{
        Account: "my-account",
        Team:    "12345",
        Player:  "23424234",
        Data:    {Family: "12345"},
    }

    fmt.Printf("%#v
", l)
}

  • 写回答

1条回答 默认 最新

  • doulin6448 2019-06-03 14:18
    关注

    Its pretty straight forward, you definded it like this:

    type PlayerRequestBody struct {
        Account string          `json:"account"`
        Team    string          `json:"team"`
        Player  string          `json:"player"`
        Data    DataRequestBody `json:"data"`
    
     l := PlayerRequestBody{
            Account: "my-account",
            Team:    "12345",
            Player:  "23424234",
            Data:    DataRequestBody{FamilyRequestBody{Family:"hello"}},
        }
    

    but wanted it to use it like that:

    type PlayerRequestBody struct {
        Account string           `json:"account"`
        Team    string           `json:"team"`
        Player  string           `json:"player"`
        Data    FamilyRequestBody`json:"family"`
    
     l := PlayerRequestBody{
            Account: "my-account",
            Team:    "12345",
            Player:  "23424234",
            Data:    {Family:"hello"}},
        }
    

    Your field Data is from type DataRequestBody like defined in your struct, you cant put another struct there. In golang there is no such thing as inheritance, and that is probably not what you wanted either.

    I agree that OP´s question is not JSON related, like Flimzy mentioned in the comments, but i leave the links for good measures.

    If that is not what you wanted, check out the many other questions explaining how json with go works, or use gobyexample, or the docs.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵