原文:http://blog.csdn.net/jilongliang/article/details/42870951
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
- packageivyy.taobao.com.domain.fastjson;
- importivyy.taobao.com.entity.Student;
- importjava.util.ArrayList;
- importjava.util.Arrays;
- importjava.util.HashMap;
- importjava.util.List;
- importjava.util.Map;
- importcom.alibaba.fastjson.JSON;
- importcom.alibaba.fastjson.JSONObject;
- importcom.alibaba.fastjson.TypeReference;
- *@DEMO:json
- *@Java:FastJSON.java
- *@Date:2015-1-19上午10:28:12
- *@Author:龙叔
- *@Email:jilongliang@sina.com
- *@Weibo:http://weibo.com/jilongliang
- *@Version:1.0
- *@Description:fastjson跟json-lib是语法很像,一句话说,所有json都差不多,
- *大家伙也没不要研究那么多,懂一种自己最擅长而且熟悉能解决自己要解决的问题就OK,
- *从fastjson反编译过来看你就看到pom.xml里面的配置肯定能看到json-lib,此时能
- *证明fastjson就是运用了json-lib!
- *
- *--------------------------------------------
- *<dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-smile</artifactId>
- <version>1.9.9</version>
- <scope>test</scope>
- </dependency>
- *--------------------------------------------
- <dependency>
- <groupId>com.googlecode.json-simple</groupId>
- <artifactId>json-simple</artifactId>
- <version>1.1</version>
- <scope>test</scope>
- </dependency>
- --------------------------------------------
- <groupId>net.sf.json-lib</groupId>
- <artifactId>json-lib</artifactId>
- <version>2.4</version>
- <classifier>jdk15</classifier>
- */
- publicclassFastJSON{
- /**
- *@paramargs
- */
- staticvoidmain(String[]args)throwsException{
- //string2Json();
- //string2Object();
- //string2List();
- map2json();
- map2JSON();
- }
- *通过fastjson把字符串转换成JSON数据
- *TypeReference
- voidstring2Json(){
- StringBufferbuffer=newStringBuffer();
- buffer.append("{");
@H_910_502@"\"age\":").append("27").append(",");
- "\"userName\":").append("\"龙叔\"").append();
@H_910_502@"\"address\":").append("\"广东省云浮市\"");
- "}");
- StringjsonText=buffer.toString();
- JSONObjectjobj=JSON.par@R_403_401@bject(jsonText);
- Stringaddress=jobj.get("address").toString();
- System.out.println(address);
- *通过fastjson把字符串转换成对象
- voidstring2Object(){
- //方法一把json字符串转成Student对象
- Studentstu1=JSON.par@R_403_401@bject(jsonText,newTypeReference<Student>(){});
- //方法二把json字符串转成Student对象
- Studentstu2=JSON.par@R_403_401@bject(jsonText,Student.class);
- System.out.println(stu1.getAddress());
- System.out.println(stu2.getAddress());
- }
- *通过fastjson把字符串转换成泛型数组
- voidstring2List(){
@H_910_502@"[{");
@H_910_502@"}]");
- //转成成数组
- Student[]stu2=JSON.par@R_403_401@bject(jsonText,255); background-color:inherit">newTypeReference<Student[]>(){});
- List<Student>list=Arrays.asList(stu2);
- for(Studentst:list){
- System.out.println(st.getAddress());
- //转换成ArrayList
- ArrayList<Student>list2=JSON.par@R_403_401@bject(jsonText,255); background-color:inherit">newTypeReference<ArrayList<Student>>(){});
- for(inti=0;i<list2.size();i++){
- Studentobj=(Student)list2.get(i);
- System.out.println(obj.getAddress());
- *通过fastjson把Map换成字符串转
- voidmap2json(){
- //创建一个Map对象
- Map<String,String>map=newHashMap<String,String>();
- map.put("username","周伯通");
@H_910_502@"address",0); background-color:inherit">"广东省仙游谷");
- "age",0); background-color:inherit">"198");
- Stringjson=JSON.toJSONString(map,255); background-color:inherit">true);
- //遍历数组数据
- for(Stringkey:map1.keySet()){
- System.out.println(key+":"+map1.get(key));
- *通过fastjson把Map换成字符串转
- voidmap2JSON(){
- Mapmap=newHashMap();
- Stringjson=JSON.toJSONString(map);
- Mapmap1=JSON.par@R_403_401@bject(json);
- for(Objectobj:map.entrySet()){
- Map.Entry<String,String>entry=(Map.Entry<String,String>)obj;
- System.out.println(entry.getKey()+"--->"+entry.getValue());
- }
copy
packageivyy.taobao.com.entity;
importjava.io.Serializable;
*@Author:liangjl
*@Date:2014-12-19
*@Description:
classStudentimplementsSerializable{
privateIntegerage;
privateStringsex;
privateStringuserName;
privateStringbirthday;
privateStringaddress;
privateStringemail;
publicIntegergetAge(){
returnage;
voidsetAge(Integerage){
this.age=age;
publicStringgetSex(){
returnsex;
voidsetSex(Stringsex){
this.sex=sex;
publicStringgetUserName(){
returnuserName;
voidsetUserName(StringuserName){
this.userName=userName;
publicStringgetBirthday(){
returnbirthday;
voidsetBirthday(Stringbirthday){
this.birthday=birthday;
publicStringgetAddress(){
returnaddress;
voidsetAddress(Stringaddress){
this.address=address;
publicStringgetEmail(){
returnemail;
voidsetEmail(Stringemail){
this.email=email;
}