Fastjson是一个Java语言编写的高性能功能完善的JSON库。
Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。
1、遵循http://json.org标准,为其官方网站收录的参考实现之一。
2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。
3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。
4、开源,使用Apache License 2.0协议开源。http://code.alibabatech.com/wiki/display/FastJSON/Home
5、具有超高的性能,java世界里没有其他的json库能够和fastjson可相比了。
高性能
fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。
支持标准
Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。
功能强大
支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。
支持循环引用
无依赖
不需要例外额外的jar,能够直接跑在JDK上。
支持范围广
支持JDK 5、JDK 6、Android、阿里云手机等环境。
开源
Apache License 2.0
代码托管在github.org上,项目地址是 https://github.com/AlibabaTech/fastjson
测试充分
fastjson有超过1500个testcase,每次构建都会跑一遍,丰富的测试场景保证了功能稳定。
获得fastjson
下载
http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/
maven
package ivyy.taobao.com.domain.fastjson;
import ivyy.taobao.com.entity.Student;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
/**
*@DEMO:json
*@Java:FastJSON.java
*@Date:2015-1-19上午10:28:12
*@Author:龙叔
*@Email:[email protected]
*@Weibo:http://weibo.com/jilongliang
*@Version:1.0
*@Description:fastjson跟json-lib是语法很像,一句话说,所有json都差不多,
*大家伙也没不要研究那么多,懂一种自己最擅长而且熟悉能解决自己要解决的问题就OK,
*从fastjson反编译过来看 你就看到pom.xml里面的配置肯定能看到json-lib,此时能
*证明fastjson就是运用了json-lib!
*
*--------------------------------------------
*
org.codehaus.jackson
jackson-smile
1.9.9
test
*--------------------------------------------
com.googlecode.json-simple
json-simple
1.1
test
--------------------------------------------
*
net.sf.json-lib
json-lib
2.4
jdk15
test
--------------------------------------------
*/
public class FastJSON {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
//string2Json();
//string2Object();
//string2List();
map2json();
map2JSON();
}
/**
* 通过fastjson把字符串转换成JSON数据
* TypeReference
*/
public static void string2Json(){
StringBuffer buffer=new StringBuffer();
buffer.append("{");
buffer.append("\"age\":").append("27").append(",");
buffer.append("\"userName\":").append("\"龙叔\"").append(",");
buffer.append("\"address\":").append("\"广东省云浮市\"");
buffer.append("}");
String jsonText=buffer.toString();
JSONObject jobj=JSON.parseObject(jsonText);
String address=jobj.get("address").toString();
System.out.println(address);
}
/**
* 通过fastjson把字符串转换成对象
* TypeReference
*/
public static void string2Object(){
StringBuffer buffer=new StringBuffer();
buffer.append("{");
buffer.append("\"age\":").append("27").append(",");
buffer.append("\"userName\":").append("\"龙叔\"").append(",");
buffer.append("\"address\":").append("\"广东省云浮市\"");
buffer.append("}");
String jsonText=buffer.toString();
//方法一 把json字符串转成Student对象
Student stu1 = JSON.parseObject(jsonText, new TypeReference(){});
//方法二 把json字符串转成Student对象
Student stu2 = JSON.parseObject(jsonText,Student.class);
System.out.println(stu1.getAddress());
System.out.println(stu2.getAddress());
}
/**
* 通过fastjson把字符串转换成泛型数组
* TypeReference
*/
public static void string2List(){
StringBuffer buffer=new StringBuffer();
buffer.append("[{");
buffer.append("\"age\":").append("27").append(",");
buffer.append("\"userName\":").append("\"龙叔\"").append(",");
buffer.append("\"address\":").append("\"广东省云浮市\"");
buffer.append("}]");
String jsonText=buffer.toString();
//转成成数组
Student[] stu2 = JSON.parseObject(jsonText,new TypeReference(){});
List list = Arrays.asList(stu2);
for(Student st:list){
System.out.println(st.getAddress());
}
// 转换成ArrayList
ArrayList list2 = JSON.parseObject(jsonText, new TypeReference>(){});
for (int i = 0; i < list2.size(); i++) {
Student obj =(Student) list2.get(i);
System.out.println(obj.getAddress());
}
}
/**
* 通过fastjson把Map换成字符串转
*/
public static void map2json(){
//创建一个Map对象
Map map = new HashMap();
map.put("username", "周伯通");
map.put("address", "广东省仙游谷");
map.put("age", "198");
String json = JSON.toJSONString(map,true); //转成JSON数据
Map map1 = (Map)JSON.parse(json);
//遍历数组数据
for (String key : map1.keySet()) {
System.out.println(key+":"+map1.get(key));
}
}
/**
* 通过fastjson把Map换成字符串转
*/
public static void map2JSON() {
Map map = new HashMap();
map.put("username", "周伯通");
map.put("address", "广东省仙游谷");
map.put("age", "198");
String json = JSON.toJSONString(map);
Map map1 = JSON.parseObject(json);
for (Object obj : map.entrySet()) {
Map.Entry entry = (Map.Entry) obj;
System.out.println(entry.getKey() + "--->" + entry.getValue());
}
}
}
package ivyy.taobao.com.entity;
import java.io.Serializable;
/**
*@Author:liangjl
*@Date:2014-12-19
*@Version:1.0
*@Description:
*/
public class Student implements Serializable{
private Integer age;
private String sex;
private String userName;
private String birthday;
private String address;
private String email;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}