为什么会生成空 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 来忽略字段。
到此这篇map转json空值没了(map转为jsonobject)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qdvuejs/38713.html