java解析json方法总结
工具包org.json.jar,是一个轻量级的,java下的json构造和解析工具包,它还包含json与xml, http headers, cookies, cdl的转换。
这里推荐使用:阿里巴巴fastjson是一个json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。包括自称最快的jackjson;
功能强大,完全支持java bean、集合、map、日期、enum,支持范型,支持自省;无依赖,能够直接运行在java se 5.0以上版本;支持android;开源 (apache 2.0)
源码地址:
fastjson api入口类是com.alibaba.fastjson.json,常用的序列化操作都可以在json类上的静态方法直接完成。
public static final object parse(string text); // 把json文本parse为jsonobject或者jsonarray
public static final jsonobject parseobject(string text); // 把json文本parse成jsonobject
public static final t parseobject(string text, class clazz); // 把json文本parse为javabean
public static final jsonarray parsearray(string text); // 把json文本parse成jsonarray
public static final list parsearray(string text, class clazz); //把json文本parse成javabean集合
public static final string tojsonstring(object object); // 将javabean序列化为json文本
public static final string tojsonstring(object object, boolean prettyformat); // 将javabean序列化为带格式的json文本
public static final object tojson(object javaobject); 将javabean转换为jsonobject或者jsonarray。
以上都是一些项目中的常用方法。
以下是自己练习写的代码:
package com.test; public class testperson { private int age; private string name; public testperson(){ } public testperson(int age,string name){ this.age=age; this.name=name; } public int getage() { return age; } public void setage(int age) { this.age = age; } public string getname() { return name; } public void setname(string name) { this.name = name; } } package com.test; import java.util.*; import com.alibaba.fastjson.*; public final class testfastjson { public static void main(string[] args) { // todo auto-generated method stub testperson json = new testperson(19,"李明"); list<testperson> list = new arraylist<testperson>(); list.add(json); list.add(new testperson(12,"张三")); //将集合或者对象序例化成json system.out.println(json.tojson(json)); system.out.println( json.tojson(list) ); //json串反序列化成对象 testperson person = json.parseobject("{\"name\":\"李明\",\"age\":19}", testperson.class); system.out.printf("name:%s,age:%d\n",person.getname(),person.getage()); string str = "[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]"; //数组对象反序列化成集合 list<testperson> listperson = json.parsearray(str,testperson.class); for(testperson item : listperson){ system.out.println( item.getname() ); system.out.println( item.getage()); } //没有对象直接解析json对象 jsonobject jobj = json.parseobject("{\"name\":\"李明\",\"age\":19}"); system.out.printf("name:%s,age:%d\n",jobj.getstring("name"),jobj.getbiginteger("age")); //没有对象直接解析json数组 jsonarray jarr = json.parsearray("[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]"); for(int i=0,len=jarr.size();i<len;i++){ jsonobject temp= jarr.getjsonobject(i); system.out.printf("name:%s,age:%d\n",temp.getstring("name"),temp.getbiginteger("age")); } for(object obj:jarr){ system.out.println(obj.tostring()); } } }
上一篇: 桂花酒的做法你知道吗