JSON是个让广大程序员又爱又恨的东西。爱“它”是因为相比其他数据协议格式,很大程度方便了人的阅读;恨“它”是因为在实际工程使用中,总是会或多或少遇到坑点。本文记录了我在使用JSON中踩过的坑,希望看到这篇文章的后人能够避坑~
Go语言中int64解析json的bug
Go语言在将int64进行JSON解析时,会出现几百或几千的小的偏移。解决方法时将int64转化成string表示。
比如,将
1 | controller.Data["json"] = map[string]int64{"MomentId": MomentId} |
改为
1 | controller.Data["json"] = map[string]string{"MomentId": strconv.FormatInt(MomentId, 10)} |
Java JSON框架的坑
主流的JSON框架有FastJson和Jackson,它们都有一个共同的问题。就是为了优化性能,默认会将getXXX方法看作是变量XXX的getter方法,在解析的时候就会调用这个getXXX方法。如果getXXX方法内部执行抛异常,或者方法内修改了某些值,那么就很可能产生许多难以排查的问题。
评论
shortname
for Disqus. Please set it in_config.yml
.