您的位置:首页 > Web前端 > JavaScript

Json解析包FastJson使用

2017-11-14 15:30 453 查看
阿里巴巴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

简单的测试应用如下:
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表示十进制数;
*/
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: