为了账号安全,请及时绑定邮箱和手机立即绑定

没有开始双引号的json标签工作

没有开始双引号的json标签工作

Go
Smart猫小萌 2022-05-05 17:54:54
我有一个带有 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>


查看完整回答
反对 回复 2022-05-05
  • 1 回答
  • 0 关注
  • 578 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号