已经有一段时间了这是我json工具的第二篇,距离第一篇《编写自己的json解析工具一》已经有一段时间了。期间的原因有很多,懒、忙于其他工作、还有中间碰到了很多本来没想过的细节问题。现在已经基本写好,可以使用但是有着很多限制,还是水平不够吧,权当给新学者参考一下,老手看了估计要喷了。这是第一次完整的摆放上来,代码结构不是很清晰,后面再重构。
此工具除jdk此外不依赖其他第三方包,最重要的类JSONUtil运用了很多反射,平时不怎么接触,也是现学先写。其他的如JSONException,Person,Phone等都是为其提供支持的,很简单。
JSONUtil使用方法:
运用主要的4个静态方法,可以实现json与Java内置对象,json与自定义javaBean间的转换,限于个人水平,对转换和对象有一定限制。javadoc描述
整个包生成Java doc如图:
部分测试代码及效果:
(有好几个测试方法,此处是测试Javabean转json,再由json转回javabean)
<span style="font-family:Arial;font-size:12px;">Person p=new Person("KJ405891","MUMU-XCJ",23);
Phone phone1=new Phone("CN-HW-20141230001","荣耀5",1999.9);
Phone phone2=new Phone("CN-MZ-20141230001","魅族MX9",888.0);
p.addPhone(phone1);p.addPhone(phone2);
try {
//解析person
String json2=JSONUtil.beanToJson(p);
System.out.println(json2);
Person p4=JSONUtil.jsonToBean(json2, Person.class);
System.out.println("his name:"+p4.getName()+",his age:"+p4.getAge()+ ",his first phone brand:"+
p4.getPhonelist().get(0).getBrand()+",price:"+p4.getPhonelist().get(0).getPrice());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}</span>
//输出1
//输出2
后期优化打算:
1、重构代码,让代码模块更清晰。
2、增加对各种类型的支持,修补bug,使工具更实用。
两个附件:
jar包
java source
(由于博客不方便附件源码,请移步到我的开源中国代码分享,http://www.oschina.net/code/snippet_2012023_45074)