Генерация вложенного JSON с Голангом - PullRequest
0 голосов
/ 03 июня 2019

Итак, что я делаю не так, я не совсем понимаю, как создать вложенную структуру JSON:

Я получаю исключение "отсутствует тип в составном литерале". 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\n", l)
}

1 Ответ

0 голосов
/ 03 июня 2019

Это довольно просто, вы определили это так:

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"}},
    }

но хотел, чтобы он использовал это так:

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"}},
    }

Ваше поле Data относится к типу DataRequestBody, как определено в вашей структуре, вы не можете поместить туда другую структуру. В Голанге нет такой вещи, как наследование, и это, вероятно, тоже не то, что вы хотели.

Я согласен, что вопрос OP не связан с JSON, как упомянуто в комментариях Флимзи, но я оставляю ссылки для хороших мер.

Если это не то, что вам нужно, проверьте множество других вопросов, объясняющих, как работает json with go, или используйте gobyexample или docs .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...