上下文:
Go 中的 JSON 编组可以将结构转换为 JSON 对象。默认情况下,所有导出的结构字段都包含在 JSON 输出中。但是,可以通过指定 :",omitempty" 作为字段标记来省略空字段。
问题:
如果嵌套结构为空(即具有零)其所有字段的值),即使它具有 :",omitempty",它仍可能出现在 JSON 输出中
解决方案:
要省略空嵌套结构,需要使用指向结构的指针。通过这样做,嵌套结构体的空值将被视为 nil 指针。
解释:
来自 Go 文档:
因此,通过使用指向嵌套结构的指针,我们确保它被考虑空值,因此当 :",omitempty" 标签为空时,会从 JSON 输出中省略使用过。
示例:
type ColorGroup struct { ID int `json:",omitempty"` Name string Colors []string } type Total struct { A *ColorGroup `json:",omitempty"` B string `json:",omitempty"` } // Empty nested struct (zero values) group := Total{ B: "abc", } // Marshal group without nested struct (only "B" field included) b, err := json.Marshal(group) if err != nil { fmt.Println("error:", err) } os.Stderr.Write(b)
以上是如何在 Go 的 JSON 封送处理中省略空嵌套结构?的详细内容。更多信息请关注PHP中文网其他相关文章!