我有一个带有 json 标签的结构。其中之一是没有开始双引号。在测试期间它确实有效。我想知道为什么以及是否有工具可以捕获此类拼写错误?type req struct {
Name string `json:name"`
}我在go1.13 linux/amd64。
1 回答
慕斯王
TA贡献1864条经验 获得超2个赞
就好像您将完全删除无效标签一样:
type req struct {
Name string
}
引自json.Marhsal():
结构值编码为 JSON 对象。每个导出的结构字段都成为对象的成员,使用字段名称作为对象键,除非由于以下原因之一省略了该字段。
如果标签无效,则视为无标签,默认使用字段名称。
go vet报告不遵循以下“约定”的标签reflect.StructTag:
按照惯例,标签字符串是可选用空格分隔的键:“值”对的串联。每个键都是一个非空字符串,由除空格 (U+0020 ' ')、引号 (U+0022 '"') 和冒号 (U+003A ':') 以外的非控制字符组成。每个值都被引用使用 U+0022 '"' 字符和 Go 字符串文字语法。
在Go Playground(也可以运行go vet)上运行它:
./prog.go:9:2: struct field tag `json:name"` not compatible with reflect.StructTag.Get: bad syntax for struct tag value
Go vet exited.
{"Name":"john"} <nil>
- 1 回答
- 0 关注
- 578 浏览
添加回答
举报
0/150
提交
取消
