map转json空值没了(map转为jsonobject)

map转json空值没了(map转为jsonobject)为什么会生成空 JSON 看例子 有这样一个 struct 类型 point 我想把他转化成 JSON 格式 把 point struct 的变量转化成 JSON 格式 但输出结果是 为什么会这样 难道是忘记添加 JSON tag 了 我们试试 加上 JSON tag 这次 输出结果依然是 为什么还是 因为对于和 JSON 格式相互转化来说 JSON tag

大家好,我是讯享网,很高兴认识大家。



为什么会生成空 JSON?

看例子,有这样一个 struct 类型 point,我想把他转化成 JSON 格式:

把 point struct 的变量转化成 JSON 格式

但输出结果是:{}

为什么会这样,难道是忘记添加 JSON tag 了?我们试试:

加上 JSON tag

这次,输出结果依然是:{}

为什么还是 {} ?

因为对于和 JSON 格式相互转化来说,JSON tag 不是必须的。默认没有 tag 的时候,JSON 的字段名和 struct 的字段名是一样的。

难道是因为 struct 类型没有导出?我们试试:

point 变成 Point 了


讯享网

这里把 point 变成 Point 了。

但输出结果依然是:{}

所以,struct 是否导出与 JSON 的相互转化没有关系。

然而,目前 struct 里面定义的字段目前是没有导出的,把这些字段导出试试:

Point 的字段都导出了

终于,结果和我们预期一样了:{"X":3,"Y":2.5}。

所以,要想与 JSON 格式相互转换(Marshal 和 Unmarshal),struct 的字段就需要导出。

如何忽略某些字段?

有两种办法:

第一种方法,就是不要导出忽略的字段;

第二种方法,如果这些忽略的字段必须导出,为了忽略他们,我们可以使用一种特殊的 JSON tag:“-”(就是一个横线)。

例子:

使用 - tag 在 JSON 转换时忽略字段

其结果是:{"A":"a"}。

注意:这里 b 字段没有导出,而 C 字段使用了 - JSON tag。

综上

为了与 JSON 相互转换,struct 相关的字段需要被导出。

但是对类型是否导出,以及是否使用了 JSON tag 无关。

我们可以使用 “-” 这个特殊的 JSON tag 来忽略字段。

小讯
上一篇 2025-06-12 18:54
下一篇 2025-06-06 11:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/167340.html