json序列化的示例分析


这篇文章主要为大家展示了“json序列化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“json序列化的示例分析”这篇文章吧。Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式阿里巴巴提供的fastjson,当用json转换实体类时–无get开头的方法,将找不到序列器。–如果有get开头的方法,但是无此get方法后面的字段,也找不到序列器[元数据一体化的项目落到此坑]。–证明它与get开头的方法有关。–fastJson在转换java对象为json的时候,fastjson默认转换是不序列化null值对应的key的。默认为都是0了,而我的目标是如果不设置值的时候,它们不会出现。我是简单地通过把他们的类型改为Integer了。应该有其它通过自定义序列化行为的方式来解决,暂不研究。但是如果想把null对应的key序列化出来呢?那就要仔细看看fastjson转换java对象为json的时候的入参了:也就是这个方法:Fastjson的SerializerFeature序列化属性:QuoteFieldNames:输出key时是否使用双引号,默认为trueWriteMapNullValue:是否输出值为null的字段,默认为falseWriteNullNumberAsZero:数值字段如果为null,输出为0,而非nullWriteNullListAsEmpty:List字段如果为null,输出为[],而非nullWriteNullStringAsEmpty:字符类型字段如果为null,输出为”“,而非nullWriteNullBooleanAsFalse:Boolean字段如果为null,输出为false,而非null结合上面,SerializerFeature… features是个数组,那么我们可以传入我们想要的参数,比如想序列化null,案例如下:java开源的Jackson类,也与get开头的方法有关【同上】。同理,想要不序列化null也是可以的,具体如下:实体上代码上注意:只对VO起作用,Map List不起作用,另外jackson还能过滤掉你设置的属性,具体的就各位自己去研究源码了Google提供的Gson,该gson序列化只与属性(字段)有关,与get开头的方法无关。gson和fastjson一样,默认是不序列化null值对应的key的,具体案例如下:若是想序列化null值对应的key,只需要将以上创建代码改成以下代码就行:在json的数据处理过程中,最让人无奈的免费云主机域名就是json serializable的问题,遇到的多了,慢慢就总结了一点经验。在将dict, list等python对象编码成json字符串的时候就要用到json.dumps()而将json字符串解码为python 对象时用的是json.loads()至于其他的基础知识查文档都可以看到,我主要说一下遇到问题怎么解决。直接将遇到的不能转换的类型分装成一个类,尤其是在mongodb的数据处理中,经常能碰到objectid ,datetime,uuid的转换错误,以后要是遇到别的继续添加就是。其中ObjectId要从bson引入。datetime也要引入也有可能遇到NoneType的情况NoneType要从types引入UUID要从uuid引入接下来就是在处理的函数中调用这个类即可。比如说我们有一个python_dict,想要将其转化为json_str其中参数cls 是我们自己封装的类,indent参数一个数字,也可以不加,在这加的原因后面会提到。如果我们想要让打印出来的json_str具有醒目的格式,indent则会很有用,至于具体的数字是多少,随你设定,设置为4是因为和python的缩进是一致的,看起来舒服而已。如果想要在前端页面中显示出来json的样式。有两种方式:在前端使用js实现在将数据存入数据库之前我们就将数据转换为标准的 json 字符串,直接在页面调用即可。比如在flask中,直接使用这样显示出来的就是标准的json样式了,对于内容一目了然。补充:其中有一个比较坑的地方。其实到这一步的时候我们该做的都已经做了,讲道理来说应该没什么问题了。但是在实践的过程中我发现页面展示出来的结果中文格式还是不正确。是’u***u**’这样的unicode编码。回到数据库查看发现数据在存的时候就存的是unciode的编码。最后查看json_str的格式,发现确实是unicode的编码,这样当然不会显示正确了。所以最后一步再加上将json字符串以’utf-8’进行编码。这样问题就完美的得到了解决。以上是“json序列化的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注百云主机行业资讯频道!

相关推荐: js如何实现数字分隔符

小编给大家分享一下js如何实现数字分隔符,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!数字分隔符可以使用下划线作为数字分隔符,这样可以方便地计算数字中0的个数。下划线分隔符也可以用于…

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

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 09/21 12:57
下一篇 09/21 12:57

相关推荐