Spring MVC集成FastJson及注解和序列化使用
fastjson
相比默认的jackson
效率更好,在一些复杂的json
结构中更容易操作。
配置fastjson
环境是spring 4.3
,在springmvc.xml
配置文件的注解驱动里面添加如下配置。
1 | <!-- 注解驱动 --> |
字段序列化
不参与序列化
- 给指定不参与序列化的字段添加
transient
属性—java特性。 - 给指定不参与序列化的字段添加
JSONField(serialize = false)
注解—fastjson特性。
@JSONType
@JSONType
作用在类上。
@JSONType(ignores={"account","phoneNum"})
忽略此两个字段,不参与序列化。花括号里面是个数组。@JSONType(includes={"account","phoneNum"})
只序列化这两个字段。
@JSONField
@JSONField
作用在属性字段或get/set
方法上。
@JSONField(serialize = false)
序列化,作用在属性字段上,等于false
不参于序列化,默认是true
。@JSONField(deserialize = false)
反序列化,注解在对象属性字段上,等于false
不参与反序列化。@JSONField(name = nick_name)
- 作用在属性字段上,序列化时重置属性字段的名称,如:nickName字段,加上注解序列化后显示nick_name。
- 作用在字段的
get/set
方法上。
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
- 作用在属性字段上,格式化日期。上面内容是
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22//属性字段
private String account;
private String password;//不参于序列化
private transient String phoneNum;//不参于序列化
private String nickName;//序列化重置属性名称
private int age;
private String address;
/**bean 转json 时会把bean中的 nickName 转换为 nick_name */
public String getNickName() {
return nickName;
}
/**json 转bean 时会把json中的 nick_name 值赋值给 nickName*/
public void setNickName(String nickName) {
this.nickName = nickName;
}SpringMVC
集成FastJson
后,在Controller
通过@ResponseBody
来实现JSON
自动转换。
- 作用在属性字段上,格式化日期。
手动序列化
本节内容是在代码层调用JSON
方法来实现序列化或json格式化。
- 对象(Object)转 JSON字符串(String)。
JSON.toJSONString(Object object);
//fastjson 默认会过滤掉空值的字段,通过配置序列化属性可将空值字段也输出,序列化属性可配置多个。
JSON.toJSONString(Object object, SerializerFeature... features);
1 | //示例 |
- JSON字符串(String)转对象(Object)
JSON.parseObject(String text);
JSON.parseObject(String text, Classclazz);
1 | //示例 |
- 对象(Object)转JSON对象(JSON)
JSON.toJSON(Object javaObject);
1 | //示例 |
序列化属性
Fastjson 在序列化时,默认会过滤掉空值的属性字段(不参与序列化,不输出),可添加以下 SerializerFeature
序列化属性来满足需要:
- WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
- WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
- WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null
- WriteDateUseDateFormat——Date的日期转换器
- QuoteFieldNames———-输出key时是否使用双引号,默认为true
- WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
- WriteMapNullValue——–是否输出值为null的字段,默认为false
- WriteEnumUsingToString——枚举类型转为String
Fastjson序列化的枚举类:com.alibaba.fastjson.serializer.SerializerFeature
。
参考:Fastjson、Jackson与SpringMVC整合的MessageConverter配置
参考:fastjson:SerializerFeature属性使用
参考: fastjson SerializerFeature详解
Spring MVC集成FastJson及注解和序列化使用