Json解析包FastJson使用
阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;
功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)
源码地址:https://github.com/alibaba/fastjson
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
*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
简单的测试应用如下:
1.TestPerson.java
package com.pers.fastjson; 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; } }
2.TestFastJson.java
package com.pers.fastjson; import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON;//阿里巴巴FastJson是一个Josn处理工具包 包括序列化和反序列化 两部分 import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public final class TestFastJson { public static void main(String[] args) { // TODO Auto-generated method stub TestPerson json = new TestPerson(19,"hoobey"); ArrayList<TestPerson> list = new ArrayList<TestPerson>(); list.add(json); list.add(new TestPerson(12,"小米")); //将集合或者对象序列化为JSON System.out.println(JSON.toJSON(json));//{"name":"hoobey","age":19} System.out.println(JSON.toJSON(list));//[{"name":"hoobey","age":19},{"name":"小米","age":12}] //Json串反序列化成对象 // 把JSON文本parse成JSONObject TestPerson person = JSON.parseObject("{\"name\":\"李明\",\"age\":19}", TestPerson.class); //name:李明,age:19 System.out.printf("name:%s,age:%d\n",person.getName(),person.getAge()); String str = "[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]"; //数组对象反序列化成集合 //把JSON文本parse成JavaBean集合 List<TestPerson> listPerson = JSON.parseArray(str,TestPerson.class); for(TestPerson item : listPerson){ System.out.println( item.getName());//李明 张三 System.out.println( item.getAge());// 19 12 } //没有对象直接解析JSON对象 parseObject(String text); // 把JSON文本parse成JSONObject JSONObject jobj = JSON.parseObject("{\"name\":\"李明\",\"age\":19}"); //name:李明,age:19 System.out.printf("name:%s,age:%d\n",jobj.getString("name"),jobj.getBigInteger("age")); System.out.println("------------------------------"); //没有对象直接解析JSON数组 JSONArray jarr = JSON.parseArray("[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]"); /* * 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")); } /* * {"name":"李明","age":19} {"name":"张三","age":12} */ for(Object obj:jarr){ System.out.println(obj.toString()); } } }
关于System.out.printf("你好,%s,下年 ,你将会,%f",name,age)的说明:
package com.pers.fastjson; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub String name="hoobey"; double age = 24.00; int age2 = 24; //你好,hoobey,下年 ,你将会,24 岁 System.out.printf("你好,%s,下年 ,你将会,%f",name,age); System.out.println(); System.out.printf("你好,%s,下年 ,你将会,%d",name,age2); /* * 解释:每一个以%开头的格式说明符都用后面给定的相应的参数替换,格式说明符尾部的转会符 将指示被格式化的数值类型: 其中: f 表示浮点数; s表示字符串; d表示十进制数; */ } }
你们都是有经验的开发人员