当使用json对结构体进行编码/解码时,几乎所有代码都使用相同的字段名,但首字母小写,这是为什么?
既然名称是相同的,并且 json 当然可以适用于任何情况,为什么要添加这个重复的东西:
Name string `json:"name"`
Run Code Online (Sandbox Code Playgroud)
为什么不直接使用Name string呢?在另一种情况下,如果名称与 go 字段名称不同,则添加格式字符串是有意义的:
Name string `json:"MyName"`
Run Code Online (Sandbox Code Playgroud)
编码/json 文档说:
每个结构体字段的编码可以通过存储在结构体字段标记中的“json”键下的格式字符串进行自定义。格式字符串给出字段的名称,后面可能是逗号分隔的选项列表。该名称可以为空,以便指定选项而不覆盖默认字段名称。
应用程序在标记中指定小写名称以在 JSON 中生成小写名称。
这个结构体
type Example struct {
Name1 string
Name2 string `json:"name1"`
}
Run Code Online (Sandbox Code Playgroud)
编码为:
{
"Name1": "1",
"name1": "2"
}
Run Code Online (Sandbox Code Playgroud)
JSON 仅要求字段名称是有效字符串。JSON 中不需要小写名称。也就是说,在 JSON 中以小写字母开头字段名称是很常见的做法。