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

最近对一个大对象转成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串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力终会有回报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值