Golang中JSON遇到的坑如何解决


本篇内容主要讲解“Golang中JSON遇到的坑如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang中JSON遇到的坑如何解决”吧!json.Marshal一个空指针的时候,得到的结果居然是”null”字符串,我以为是””或者报错。还有个奇怪的坑这个居然不报错,而是得到空指针p如果把s随便换成其他字符串s := "abc",则报错:invalid character 'a' looking for beginning of value,之前我理解的是null对go来说应该跟abc没有差别,都是字符串。没想到他们是不一样的,下面来深究一下json.UnMarshal底层代码。在UnMarshal之前它有个checkValid函数checkValid函数会check每一个字符,调用step函数,step初始值是stateBeginValue有这么一段代码,这是处理第一个字符的,发现它对第一个字符是n有特殊处理并且设置下一个字符处理函数为stateN也就是下一个字符必须是u,再下一个字符处理函数为stateNu也就是下一个字符必须是l,再下一个字符处理函数为stateNul也就是下一个字符必须是l,再下一个字符处理函数为stateEndValue。可见checkValid函数对true,false等都有特殊处理。使用时需要注意。对于json.Marshal函数,通过调试发现它对空指针也有特殊处理如果是空指针则返回字符串”null”,并且不会报错。结果k:Name,v:text, vtype:string
k:Age,v:18, vtype:float64显然,Age类型变成了float64。会造成什么问题呢?当int大小超过6位的时候就变成了科学计数法 比如Age=1234567, 结果为k:Name,v:text, vtype:string
k:Age,v:1.234567e+06, vtype:float64这个时候如果直接将map更新到db,原本是int类型的字段变成了float类型,就报错了到此,相信大家对“Golang中JSON遇到的坑如何解决”有了更深的了解,不妨来实际免费云主机域名操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: Python Flask框架如何安装及应用

本篇内容主要讲解“PythonFlask框架如何安装及应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PythonFlask框架如何安装及应用”吧!将下列代码保存为hello.py:Hello,World!运行上…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/15 09:19
下一篇 05/15 09:21

相关推荐