SpringMVC整合FastJson及簡單使用
阿新 • • 發佈:2019-01-09
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