最近对一个大对象转成json字符串存入redis,在开发过程中发现比较有意思的,发现对象中的属性类型是List类型的,无法转成字符串,再次比较一下几个json转船的工具包。

1、最常用的阿里巴巴家的fastjson--JSONObject方式

2、伟创力(Flextronics)家的flexjson的JSONSerializer方式

3、谷歌家的Gson方式

当处理层级关系比较浅的结构时,以上三家是都没有问题,但是当层级关系比较复杂时,譬如A对象里有B对象,List<C>对象,B对象里有List<D>等等就会出现json串丢失的现象。

上代码和运行结果:

List<String> testList=new ArrayList<>();testList.add("张三");testList.add("张三1");testList.add("张三2");testList.add("张三3");testList.add("张三4");AuctionObservable auctionObservable=new AuctionObservable();auctionObservable.setNotifyObs(testList);String jsonObjectStr=JSONObject.toJSONString(auctionObservable);System.out.println("JSONObject转化的json串"+jsonObjectStr);Gson gson =new Gson();String gsonStr = gson.toJson(auctionObservable);System.out.println("Gson转化的json串"+gsonStr);String objStr = JsonGenerator.serializerObject(auctionObservable);System.out.println("JsonGenerator转化的json串"+objStr);

运行结果

JSONObject转化的json串{"clientSessionId":{},"notifyObs":[],"obs":[],"preVersion":0,"subtractLadderList":[500,1000,5000,10000,50000,100000,500000,1000000],"version":0}
Gson转化的json串{"preVersion":0,"version":0,"notifyObs":["张三","张三1","张三2","张三3","张三4"],"clientSessionId":{},"changed":false,"obs":[]}
JsonGenerator转化的json串{"auctionData":null,"auctionInfoData":null,"clientSessionId":{},"connectCheck":null,"currency":null,"ladderSet":null,"liveMsg":null,"operatorSessionId":null,"preVersion":0,"sessionData":null,"type":null,"version":0}

通过以上比较我们可以看出JSONObject和JsonGenerator对于非空的list并未转换,只有Gson对含有数据的notifyObs进行了json数据转换为json串。

关于对象转json字符串的几个工具比较相关推荐

  1. Json对象和Json字符串

    JSON对象 有时候在做项目的时候时常将这两个概念弄混淆,尤其是在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串.  先介绍一下json对 ...

  2. java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...

  3. json对象和json字符串转换方法

    在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. 先明 ...

  4. Java中普通字符串转json_java普通对象和json字符串的互转

    一.java普通对象和json字符串的互转 java对象---->json 首先创建一个java对象: 现在java对象转换为json形式: 定义了一个Student的实体类,然后分别使用了JS ...

  5. JS对象和JSON字符串相互转化总结

    在web开发中,一般情况下需要前端和服务器的交换数据,我们一般使用JSON来完成数据的传输,JavaScript操作的对象是一般是变量:因此我们需要将JSON字符串转换为JS变量,下面总结JS对象和J ...

  6. 【Groovy】json 序列化 ( 类对象转为 json 字符串 | 使用 JsonBuilder 进行转换 | 使用 JsonOutput 进行转换 | 将 json 字符串格式化输出 )

    文章目录 一.Groovy 对象转为 json 字符串 ( 使用 JsonBuilder 进行转换 ) 二.使用 JsonOutput 将指定类型对象转为 json 字符串 三.将 json 字符串格 ...

  7. javascript对象和json字符串之间转换的问题

    在开发中,当使用ajax向后端发送请求返回一个json时,有两个可能,一种是返回json字符串,一种是返回object. javascript中有两个方法可以用来处理两者之间的互相转换问题: JSON ...

  8. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  9. jQuery中json对象与json字符串互换

    json字符串转json对象:jQuery.parseJSON(jsonStr); json对象转json字符串: JSON.st ringify(jsonObj); IE中可能对unicode使用& ...

最新文章

  1. web前端培训之Javascript如何改变数组的长度?
  2. linux下查看已经安装的jdk 并卸载jdk
  3. RandomForest:随机森林
  4. Scala 求三个数中的最大数代码示例
  5. promise使用promise进行封装拉起微信支付
  6. linux内核启动后门,Linux内核模块入门之简单内核后门
  7. 智能时代 软件赋能——2017中国软件技术大会
  8. fastJson null字符串转空 null数字转0
  9. CentOS6.8 下MySQL5.6.29主从复制架构配置
  10. NEW RToax logo
  11. unix network programming volume1 sorce code build and get(UNIX網絡編程卷1第三版)
  12. UITableViewCell delete button 上有其它覆盖层
  13. delphi7 安装 indy10.2.3
  14. 计算机设备问题代码43,win10系统提示由于该设备有问题windows已将其停止(代码43)的修复方案...
  15. 深度学习-1.3卷积神经网络
  16. QT移植Linux平台
  17. EPS电动转向系统分析
  18. [windows Tools] windows程序打包工具-Advanced Installer 10.0
  19. FFMpeg编译之路
  20. Android6.0动态权限申请及RxPermissions权限库使用

热门文章

  1. 【技术分享】数据之道 笃行拓新
  2. Java毕业设计选题推荐 SpringBoot毕设项目分享
  3. 阻塞状态和等待状态的区别
  4. wordpress html插件安装,WordPress 插件安装教程及方法
  5. VS2017 winform开发知识点汇总
  6. 四旋翼无人机学习第14节--PCB Editor简单绘制封装-自动生成封装
  7. 华兴资本CEO包凡:今年将更积极参与保荐人业务
  8. 『Python学习笔记』Python实现并发编程(补充joblibpymysql)
  9. 01【活动】如何系统的学习一门it技术
  10. ASUS WIN7 DRIVER