控件以go-json结构显示



我正在研究一个golang嵌套结构,并希望控制在JSON中显示哪些子结构。

下面是一个例子。如果我只想显示Citrus中的树ID和名称字段,我正在尝试下面的符号,但它仍然在打印整个Citrus结构。我不想要Citrus下的第三个结构变量。我该如何控制它?

type trees struct {
Id    int
CitrusTree *Citrus `json:"name,treeid,omitempty"`
VegTree  *Veg
}
type Citrus struct {
treeid  int
name string
substuct *someStruct
}

根据Marshal上的文档,您排除了带有json:"-":的字段

// Field is ignored by this package.
Field int `json:"-"`

请注意,json标记的工作方式与文档中所说的完全相同,其中不包括提供您希望包含的结构字段的字段列表;这在文档中从未提及,也不是包的工作方式。该标记允许您指定要在JSON中使用的字段的名称,以及几个标志(例如omitempty(。将名称传递为-表示应排除该字段。要获得您所描述的行为(并更正要导出的Citrus字段(:

type trees struct {
Id    int
CitrusTree *Citrus
VegTree  *Veg
}
type Citrus struct {
Treeid  int
Name string
Substuct *someStruct `json:"-"`
}

或者,您可能只能导出您想要整理的字段,这取决于您是否需要从其他包访问这些字段:

type trees struct {
Id    int
CitrusTree *Citrus
VegTree  *Veg
}
type Citrus struct {
Treeid  int
Name string
substuct *someStruct
}

由于无法对未导出的字段进行军事化,因此它们将从JSON输出中排除。

最新更新