关于对象转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串。
关于对象转json字符串的几个工具比较相关推荐
- Json对象和Json字符串
JSON对象 有时候在做项目的时候时常将这两个概念弄混淆,尤其是在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串. 先介绍一下json对 ...
- java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...
- json对象和json字符串转换方法
在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. 先明 ...
- Java中普通字符串转json_java普通对象和json字符串的互转
一.java普通对象和json字符串的互转 java对象---->json 首先创建一个java对象: 现在java对象转换为json形式: 定义了一个Student的实体类,然后分别使用了JS ...
- JS对象和JSON字符串相互转化总结
在web开发中,一般情况下需要前端和服务器的交换数据,我们一般使用JSON来完成数据的传输,JavaScript操作的对象是一般是变量:因此我们需要将JSON字符串转换为JS变量,下面总结JS对象和J ...
- 【Groovy】json 序列化 ( 类对象转为 json 字符串 | 使用 JsonBuilder 进行转换 | 使用 JsonOutput 进行转换 | 将 json 字符串格式化输出 )
文章目录 一.Groovy 对象转为 json 字符串 ( 使用 JsonBuilder 进行转换 ) 二.使用 JsonOutput 将指定类型对象转为 json 字符串 三.将 json 字符串格 ...
- javascript对象和json字符串之间转换的问题
在开发中,当使用ajax向后端发送请求返回一个json时,有两个可能,一种是返回json字符串,一种是返回object. javascript中有两个方法可以用来处理两者之间的互相转换问题: JSON ...
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换
一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...
- jQuery中json对象与json字符串互换
json字符串转json对象:jQuery.parseJSON(jsonStr); json对象转json字符串: JSON.st ringify(jsonObj); IE中可能对unicode使用& ...
最新文章
- web前端培训之Javascript如何改变数组的长度?
- linux下查看已经安装的jdk 并卸载jdk
- RandomForest:随机森林
- Scala 求三个数中的最大数代码示例
- promise使用promise进行封装拉起微信支付
- linux内核启动后门,Linux内核模块入门之简单内核后门
- 智能时代 软件赋能——2017中国软件技术大会
- fastJson null字符串转空 null数字转0
- CentOS6.8 下MySQL5.6.29主从复制架构配置
- NEW RToax logo
- unix network programming volume1 sorce code build and get(UNIX網絡編程卷1第三版)
- UITableViewCell delete button 上有其它覆盖层
- delphi7 安装 indy10.2.3
- 计算机设备问题代码43,win10系统提示由于该设备有问题windows已将其停止(代码43)的修复方案...
- 深度学习-1.3卷积神经网络
- QT移植Linux平台
- EPS电动转向系统分析
- [windows Tools] windows程序打包工具-Advanced Installer 10.0
- FFMpeg编译之路
- Android6.0动态权限申请及RxPermissions权限库使用