Java中几个json工具分析

1,环境

JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码

2,分析对象

3,使用实例

用两个bean进行测试,两个bean都嵌套有数组和对象,唯一的区别是一个属性全部小写开头,另一个属性全部大写开头,bean里面都有setter和getter。

JBean代码如下:

public class JBean {

private int B_int;

private String B_String;

private List B_List;

private JBeanSub1 B_Object;//子对象

private static final String jDate = "{/"b_int/":1988,/"b_String/":/"sheep/",/"b_List/":[/"List1/",/"List2/",/"List3/"],/"b_Object/":{/"sub_int/":2012}}";

public void initBean(){

this.setB_int(1988);

this.setB_String("sheep");

this.B_List = new ArrayList();

this.B_Object = new JBeanSub1();

this.B_List.add("List1");

this.B_List.add("List2");

this.B_List.add("List3");

this.B_Object.setSub_int(2012);

}

Getter  and  setter……

}

class JBeanSub1{

private int Sub_int;

Getter  and  setter……

}

JBean2代码如下:

把JBean的属性头字母全部改成小写,然后用IDE自动生成setter和getter。

Jackson使用实例

(Json to bean)

ObjectMapper mapper = new ObjectMapper();

JBean bean = mapper.readValue(JBean.getjDate(), JBean.class);

(Bean to json)

JBean bean = new JBean();

bean.initBean();

StringWriter sw = new StringWriter();

JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);

mapper.writeValue(gen, bean);

gen.close();

String json = sw.toString();

嵌套使用List和Object的情况下,jackson依然能准确转换,唯一不足之处就是无论bean属性的开头字符是大写还是小写,被jackson转换成字符串后首字母都是小写的了。

Gson使用实例

(json to bean)

Gson gson = new Gson();

JBean2 bean = gson.fromJson(JBean.getjDate(), JBean2.class);

(bean to json)

JBean2 bean = new JBean2();

bean.initBean();

System.out.println(gson.toJson(bean));

使用很简单,bean小写字母开头时,由json转bean才能成功。

JSON_LIB使用实例

(json to bean)

JBean2 bean = new JBean2();

bean.initBean();

JSONObject obj = JSONObject.fromObject(bean);

System.out.println(JSONArray.fromObject(bean).toString());

(bean to json)

JBean2 bean = new JBean2();

bean.initBean();

System.out.println(JSONObject.fromObject(bean));

System.out.println(JSONArray.fromObject(bean).toString());

对嵌套List和Object支持不够好,我调试嵌套的时候没有成功,时间关系也没来得及细细找原因,不过之前有使用过,这个工具最大的好处是,无论json字符串嵌套的是数组还是对象,使用JSONObject.fromObject或者JSONArray.fromObject转换后一律分别转换成对象和数组了,对操作是比较方便的,但是却改变了json原来的数据结构。

4,性能对比

简单的说就是性能方面jackson >  gson  >  json-lib。其中gson比json-lib性能略高一点,jacks性能高出json-lib有10倍。

5,总结

还有一点忘记补充了,jackson和gson都可以独立使用,而json-lib是依赖其他五个包的,json-lib官网原话

Json-lib requires (at least) the following dependencies in your classpath:

jakarta commons-lang 2.5

jakarta commons-beanutils 1.8.0

jakarta commons-collections 3.2.1

jakarta commons-logging 1.1.1

ezmorph 1.0.6

这些类库据说在struts2里面都有。无语json-lib了,性能低不说,还依赖那么多类库,转换也不是很方便。

强力推荐使用jackson和gson,我测试用的源代码http://download.csdn.net/source/3386315,时间太急了简单总结下,希望下次遇到json的时候能反映迅速点,有什么写错了希望纠正,谢谢!

json java 比较_Java中json工具对比分析相关推荐

  1. java字符串转json取集合_Java中Json字符串直接转换为对象的方法(包括多层List集合)...

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...

  2. java json 易用_Java中 Json的使用

    Java JSON 本章节我们将为大家介绍如何在 Java 语言中使用 JSON. 类库选择 Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库. 下面是几个常用的 JSON 解析 ...

  3. json java 转义_java解析json,带转义字符的json

    一:解析普通json 1:不带转化字符 格式{"type":"ONLINE_SHIPS","message":{"currentT ...

  4. Rose与PowerDesigner:两款建模工具对比分析比较[转]

     Rose与PowerDesigner:两款建模工具对比分析比较收藏 [IT168技术分析] 一. 二者的出身       作为世界最著名的两大CASE工具,Rational Rose和PowerDe ...

  5. SCA工具对比分析和应用解读「超全」

    开源软件在软件开发中的应用越来越广泛,但开源软件的使用也带来了不容忽视的安全威胁,开源软件中的漏洞容易直接被引入,企业安全合规面临的新挑战也在逐渐增加. 为了对开源软件进行管理,软件成分分析(Soft ...

  6. 【转】 SCM工具对比分析

    SCM工具对比分析 软件配置管理的重要性已被大多数软件及相关企业所认识,而配置管理工具的使用是实施配置管理的重要部分.为帮助大家选择适合的SCM工具,本文对目前较为流行的配置管理工具VSS,CVS,C ...

  7. JAVA 编程中的汉字处理(1)---java 编程技术中汉子问题的分析与解决

    Java 编程技术中汉字问题的分析及解决 段明辉, 自由撰稿人 简介: 在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题.一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够 ...

  8. Java异常打印输出中常见方法的分析

    Java异常是在Java应用中的警报器,在出现异常的情况下,可以帮助我们程序猿们快速定位问题的类型以及位置.但是一般在我们的项目中,由于经验阅历等多方面的原因,依然有若干的童鞋在代码中没有正确的使用异 ...

  9. java中将json字符串_Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  10. java list 对象 json字符串_Java中Json字符串直接转换为对象的方法(包括多层List集合)...

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...

最新文章

  1. [zt]如何用Javascript获得TextArea中的光标位置
  2. 在Homebrew 发布程序
  3. 前台html调用函数 格式化输出
  4. 项目质量管理:质量与质量管理概念
  5. 重磅!腾讯云首次披露自研业务上云历程
  6. 我的世界java怎么玩起床战争_我的世界怎么玩起床战争_我的世界起床战争怎么玩_52pk单机游戏...
  7. ADC实验(读取引脚电压值)
  8. 论文浅尝 | 基于深度强化学习的远程监督数据集的降噪
  9. linux批量做信任,Linux 批量建立信任关系,实现ssh无password登陆的脚本
  10. Behavior Designer知识点
  11. VB.NET版+三层实现登陆
  12. SWAT模型学习小技巧(前言)
  13. 2022京东年货节红包什么时候开始
  14. 直播视频app源码从零搭建流媒体服务器+obs推流直播
  15. 社交网络用户行为分析,各类社交软件用户分析
  16. 深信服 AC上网 行为管理设置
  17. 经纬度WGS84地理坐标系转换成CGCS2000坐标系步骤
  18. 键盘没有 菜单键 menu 键盘映射
  19. 力扣多线程练习----交替打印FooBar---打印零与奇偶数
  20. NPOI导出EXCEL 合并单元格、统计列、单元格样式设置

热门文章

  1. freemarker的下拉框回显
  2. VMware安装VyOS
  3. 计算机数字合成音乐,数字音乐合成原理
  4. java实现pdf预览和下载
  5. maven的pom详解
  6. 物流项目介绍示范 有用
  7. SpringBoot 单元测试——JUnit5
  8. MIUI10使用adb工具实现免ROOT冻结系统应用和去广告
  9. 烽火HG680-KB及其他5款Hi3798MV310芯片盒子刷机固件及教程(当贝桌面)
  10. Origin下载安装教程(亲测有用)