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

如何使用 go 结构制作复杂的 json 数据?

如何使用 go 结构制作复杂的 json 数据?

Go
qq_遁去的一_1 2022-08-15 15:53:25
我想构建一个像{  "data": {      "posts": [        {"title": "first", "body": "first body"},        {"title": "second", "body": "second body"}      ],      "categories": [        {"name": "red"},        {"name": "white"}      ]  }}它包括两部分数据:帖子和类别。它们是不同的结构。但想把它们一起发送一次。使用此代码package mainimport (    "net/http"    "github.com/labstack/echo/v4")type Article struct {    Data struct {        Post []struct {            Title string `json:"title"`            Body  string `json:"body"`        } `json:"posts"`        Category []struct {            Name string `json:"name"`        } `json:"categories"`    } `json:"data"`}func main() {    e := echo.New()    e.GET("/", func(c echo.Context) error {        article := &Article{}        data := article.Data        post := data.Post        post[0].Title = "first"        post[0].Body = "first body"        post[1].Title = "second"        post[1].Body = "second body"        category := data.Category        category[0].Name = "red"        category[1].Name = "white"        return c.JSON(http.StatusOK, article)    })    e.Logger.Fatal(e.Start(":8008"))}我试图做一个根结构,然后定义它的子结构,然后一个接一个地将数据设置为树。Article
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

您可以通过为输出中的每个对象声明命名类型来简化所需的代码:


type Post struct {

    Title string `json:"title"`

    Body  string `json:"body"`

}


type Category struct {

    Name string `json:"name"`

}


type Data struct {

    Posts      []Post     `json:"posts"`

    Categories []Category `json:"categories"`

}


type Article struct {

    Data Data

}

通过此更改,可以轻松编写复合文本:


article := &Article{

    Data: Data{Posts: []Post{

        {

            Title: "first",

            Body:  "first body",

        },

        {

            Title: "second",

            Body:  "second body",

        },

    },

        Categories: []Category{

            {

                Name: "red",

            },

            {

                Name: "white",

            },

        },

    },

}


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

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