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 h3.6m 人类行为预测论文复现
  • ¥50 wordpress项目注册报失败刷新后其实是成功状态,请求排查原因
  • ¥20 linxu服务器僵尸进程不释放,代码如何修改?
  • ¥15 pycharm激活不成功
  • ¥40 如果update 一个列名为参数的value
  • ¥15 基于51单片机的水位检测系统设计中LCD1602一直不显示
  • ¥15 OCS2安装出现问题,请大家给点意见
  • ¥15 ros小车启动launch文件报错
  • ¥15 vs2015到期想登陆但是登陆不上
  • ¥15 IPQ5018制作烧录固件,boot运行失败(操作系统-linux)(相关搜索:操作系统)(相关搜索:操作系统)