关于使用fastjson反序列化的顺序错乱问题



  博客最近一直没更新,今天终于有时间好好写一下博客了。相信大家在Java开发过程中都会用到fastjson这个阿里巴巴的开源JSON解析库。这个框架比谷歌的对应的JSON解析框架更好用。

  最近在使用该框架对JSON字符串反序列化到JavaBean过程中遇到了顺序错乱的问题,这个错乱问题也许在我们平常在写demo练习的时候感觉不到它的重要性,但如果你把这个技术运用到业务层面的话,你就会发现业务让这项技术或这段代码充满了灵魂。我像以往用parseObject的方法来反序列化JSON字符串成对象,如下图所示:
   JSONObject jsonObjectBody = JSON.parseObject(responseBody);

   这个方法当然可以成功实现我们的目的,但你会发现反序列化后的对象比如list数组中的对象顺序是错乱的!!这样当你接受到的JSON字符串中的对象是按照创建时间排序的话,你的这一操作把它顺序搞乱以至于渲染到前端展示给用户,自然用户交互体验不好,所以对于一个想专研技术的人务必也要把细节做好。
最后经过看源码和搜索,我还是找到了解决方法,如下所示:

  JSONObject jsonObjectBody = JSON.parseObject(responseBody,  Feature.OrderedField);

   其实这就是阅读框架源码的优势,当你对一个框架的细节了如指掌,你就能找到解决方法。从以上的代码段中可以看到我加入了 Feature.OrderedField(有序字段)这个功能特性,从而有效地解决了反序列化过程中对象顺序错乱的问题。
   最近遇到问题一直深有感触,大家解决问题时不能一下子就各种百度谷歌搜索,大家可以先去分析出现这个问题的原因,然后再去找解决方法,而且至于解决方法,大家可以先从它的源码和技术说明文档那里入手,如果感觉不是很直观方便,那就可以用英文关键字进行谷歌搜索,最后迫不得已才用百度,一定要养成这个好习惯!完毕!

发布了17 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Melo_FengZhi/article/details/103555194