fastJSON介绍:
阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分。
它具备如下特征:一、速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser,包括自称最快的JackJson;
二、功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支 持泛型;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源
序列化就是把JavaBean对象转化成JSON格式的文本。
String obj="{name:'xx',age:13}";
String jsonStr=JSON.toJSONString(obj);
标准的JSON是使用双引号的,javascript支持使用单引号格式的json文本,fastjson也支持这个特性,打开SerializerFeature.UseSingleQuotes这个特性就可以了了,例如:
String obj="{name:'xx',age:13}";
String jsonStr=JSON.toJSONString(obj,SerializerFeature.UseSingleQuotes);
fastjson序列化时可以选择的SerializerFeature有十几个,你可以按照自己的需要去选择使用。
fastjson直接支持日期类型数据的格式化,包括java.util.Date、java.sql.Date、java.sql.Timestamp、java.sql.Time。例如:
Date date=new Date();
JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat);
输出的结果为:"2011-12-18 00:23:07"
也可以指定格式:
JSON.toJSONStringWithDateFormat(date,"yyyy-MM-dd HH:mm:ss.SSS");
输出的结果为:"2011-12-18 00:23:07.429"
反序列化
对于字符串的过滤这里推荐多个过滤
fastJSON中提供一个很好的Filter:SimplePropertyPreFilter,可以对多个需要过滤的字段进行过滤。
例如:
List<Person> list = new ArrayList<Person>();
list.add(new Person("lisi", 19, 159785));
list.add(new Person("wangwu", 10, 113123213));
list.add(new Person("zhaoliu", 29, 1444785));
//这里需要一个数组用来设置需要显示的字段下面这三个属性都需要显示,
String[] s=new String[]{"age","name","num"};
SimplePropertyPreFilter f= new SimplePropertyPreFilter(Person.class,s);
String j=JSON.toJSONString(new Person("lisi", 19, 159785), f);
System.out.println(j);
输出结果为:{"age":19,"name":"lisi","num":159785}