1.FastJson介绍
Fastjson是阿里巴巴的一个Java语言编写的高性能功能完善的JSON库。
特性:
- 在服务器端和android客户端提供最佳性能
- 提供简单toJSONString()和parseObject()方法的Java对象转换为JSON,反之亦然
- 允许存在的无法改变的对象转换为从JSON
- Java泛型的广泛支持
- 允许自定义表示对象
- 支持任意复杂的对象(深继承层次结构和广泛使用泛型类型)
主要特点:
-
快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
-
强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
-
零依赖(没有依赖其它任何类库除了JDK)
-
支持注解
2.springmvc整合FastJson
- 在springmvc的xml配置文件中,填入如下配置。
<mvc:annotation-driven> <mvc:message-converters> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"/> </mvc:message-converters> </mvc:annotation-driven>
- 通常默认配置已经可以满足大部分使用场景,如果你想对它进行自定义配置的话,你可以添加
FastJsonConfig
Bean。<mvc:annotation-driven> <mvc:message-converters> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="fastJsonConfig" ref="fastJsonConfig"/> </bean> </mvc:message-converters> </mvc:annotation-driven> <bean id="fastJsonConfig" class="com.alibaba.fastjson.support.config.FastJsonConfig"> <!-- 自定义配置... --> </bean>
3.Fastjson的使用
Fastjson的对json的解析不是自动的,需要手动调用方法进行转换。
-
FastJson API
// 把JSON文本parse为JSONObject或者JSONArray public static final Object parse(String text); // 把JSON文本parse成JSONObject public static final JSONObject parseObject(String text); // 把JSON文本parse为JavaBean public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse成JSONArray public static final JSONArray parseArray(String text); // 把JSON文本parse成JavaBean集合 public static final <T> List<T> parseArray(String text, Class<T> clazz); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object); // 将JavaBean序列化为带格式的JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean转换为JSONObject或者JSONArray public static final Object toJSON(Object javaObject);
- FastJson注解:
用得最多的就是@JsonField注解,其它的我目前还不知道
给出示例:
public class Person {
@JSONField(name="name") //也可以写在getter和setter方法上,网上说写在方法上更符合预期。
private String name;
@JSONField(name="age")
private String age;
@JSONField(name="desc")
private String desc;
@JSONField(serialize=false) //在序列化的时候就不包含这个字段了。deserialize与之相反
private Long ProjectID