为什么struct字段的格式字符串总是小写

flu*_*ter 2 json go

当使用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)

Cer*_*món 5

编码/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 中以小写字母开头字段名称是很常见的做法。