Go语言官方JSON库从来没有支持过“,inline“标签,但江湖却到处是它的传说

我们经常在Go开源项目或是公司项目中看到为嵌入的结构体字段加上 json:",inline" 标签,并解释说这是为了让嵌入的结构体中包含的字段直接成为外层结构体的字段,而非嵌套在外层 JSON 对象的下一级:

在这里插入图片描述

但是在实际写代码尝试时却发现,加不加 `json:“inline”` 标签效果都是一样的,省略字段名的嵌入的结构体字段在不额外设置 `json` 标签时,会默认内联(和外层JSON合并到同一级)处理,而正常的带字段名的结构体字段不管加不加该标签最终都是会生成嵌套的JSON

在这里插入图片描述

随后我又查阅了官方文档没有看到关于 inline的介绍,在 encoding/json 源码中搜索该关键字也没有搜索到,所以怀疑是不是历史版本中曾支持过该标签,但现在已经废弃了,但经过一番搜索后确认,官方 encoding/json 库从来就没有支持过inline标签,该用法纯属于以讹传讹,且在 Kubernetes 项目中就大量使用

在这里插入图片描述
在这里插入图片描述

不过,该标签可能会在将来的 encoding/json/v2 版本中得到支持,该版本目前仍属于实验性质的功能,且未来该标签的表现会不会出现变化还不确定,所以最好删除当前项目中用到的该标签:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值