无法使用 json.MarshalIndent 打印嵌套结构 golang

纳扬·图尔卡
package main

import (
    "encoding/json"
    "fmt"
)

type Data struct {
    a string
    b int
}

type Project struct {
    Id    int64
    Title string
    Name  string
    Data  Data
}

func main() {
    yourProject := &Project{
        Id:    1,
        Title: "games",
        Name:  "Nayan",
        Data: Data{
            a: "chill",
            b: 1,
        },
    }

    fmt.Println(yourProject.Data.a)
    fmt.Printf("%T\n", yourProject)
    res, _ := json.MarshalIndent(yourProject, "", "\t")
    fmt.Print(string(res))
}

在这里,我正在尝试打印嵌套结构,但一半的结构正在打印。Data 子结构打印为 {}。我想将它打印为整个结构。有人可以解释为什么会发生并帮助我。提前致谢。

输出

chill
*main.Project
{
    "Id": 1,
    "Title": "games",
    "Name": "Nayan",
    "Data": {}
}
奇雷利94

json包方法只能看到和导出结构的公共成员Marshal

结构值编码为 JSON 对象。每个导出的结构字段都成为对象的成员,使用字段名称作为对象键

请参阅Marshal 文档

如果你想看到ab重视,你必须将它们导出,并将名称更改为Aand B

如果要在 json 中保留字段名称小写,请使用结构字段标签,例如:

    A string `json:"a"`

例如:https ://go.dev/play/p/Rd5VdPohd0O

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章