json-lib快速入门

1)JSON简介
2)JSON/LIST转换
3)JSON/MAP转换
4)JSON/动态Bean转换
5)JSON/静态Bean转换
6)JSON/XML输出

1.JSON简介
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript,但是不仅仅限于此。
详情可以参考www.json.org
例如一段XML

用JSON表示如下:

XML的解析得考虑子节点父节点关系,而JSON的解析难度相当低,很多控件,尤其是ajax相关的数据交换很多都用json.

2)JSON/LIST转换
本教程解析采用的json-lib,官方网站为http://json-lib.sourceforge.net/,本教程参考官方教程
环境需要配置的jar如下

  • commons-beanutils和ezmorph控制反射
  • commons-collections是apachecommons的子项目,扩展了java集合类
  • commons-lang扩展了java.lang包
  • commons-logging日志类
  • xom是xml解析类,可以参考www.xom.nu
  • junit单元测试用的jar
  • json-lib核心jar

项目文件夹中拥有货物参数(Shop)和货物参数列表(ShopList)两个实体
Shop包含name和property两个字段,ShopList包含Shop的列表
对应的json是

把这样的数据结构作为用户定义个人信息存入数据库可以达到个性化参数的作用,
比如shopex的数据库中很多表就是用的json数据类型。因为用户自己添加的参数的长度是不固定的
比如上述例子就拥有9个用户自定义的参数
当用户需要填写这些参数的时候,需要转化为list,然后在struts2的view去显示
完成的代码可以参考附件的ArrayUtil文件
核心代码仅仅就一行

得到这个jsonArray后要转化为ArrayList,需要用循环遍历,如下

然后得到的list就是普通的ArrayList了

3)JSON/MAP转换
当我们初始化完一个map,放入json可以直接放入

核心代码为
JSONObject jsonObject = JSONObject.fromObject(map);
JsonLib会自动映射
完成例子见附件MapUtil.java


4)JSON/动态Bean转换
所谓动态bean即是java运行的时候根据情况创建的,而不是程序员已经好了的Bean
JsonLib会自动根据Json格式数据创建字段,然后创建一个包含这些字段的Object
本例子中采用JUNIT做单元测试验证,见DynamicBean.java


5)JSON/静态Bean转换(StaticBean.java)
JSONLIB在转换的时候会自动查找关系,比如子类和父类
例如JSON数据源

JSONObject.toBean()方法的三个参数分别表示数据源对应的JSON对象,转化后的对象ShopList和数据源map
然后这样也可以取得ShopList
这种方法和动态转换的区别在于,动态转换仅仅只是转为Object
而静态转换是转换为已经定义过的实体类,会自动映射(这点类似Ibatis)

6)JSON/XML输出
如果自己用String的方法转化为XML输出要写很多代码,然后条用JSONLIB,核心代码仅仅一步

输出结果为

博文来源:http://www.blogjava.net/sxyx2008/archive/2010/07/11/325768.html

你可能感兴趣的:(json-lib)