原因:
1.jackjson无法处理嵌套的entity关系;例:entity:A中包含entity:B,B中又有C;
2.fastjson性能优越;
3.把fastjson用于memached缓存对象数据;
使用方法:
一:配置文件
<!-- 启用注解 -->
<mvc:annotation-driven>
<mvc:message-converters>
<ref bean="mappingFastJsonHttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<bean id="mappingFastJsonHttpMessageConverter"
class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
<property name="fastJsonConfig">
<bean class="com.alibaba.fastjson.support.config.FastJsonConfig">
<property name="dateFormat" value="yyyy-MM-dd HH:mm:ss"/>
<property name="serializerFeatures">
<list>
<!-- 输出key时是否使用双引号 -->
<value>QuoteFieldNames</value>
<!-- 是否输出值为null的字段 -->
<!-- <value>WriteMapNullValue</value> -->
<!-- 数值字段如果为null,输出为0,而非null -->
<value>WriteNullNumberAsZero</value>
<!-- List字段如果为null,输出为[],而非null -->
<value>WriteNullListAsEmpty</value>
<!-- 字符类型字段如果为null,输出为"",而非null -->
<value>WriteNullStringAsEmpty</value>
<!-- Boolean字段如果为null,输出为false,而非null -->
<value>WriteNullBooleanAsFalse</value>
<!-- null String不输出 -->
<value>WriteNullStringAsEmpty</value>
<!-- null String也要输出 -->
<!-- <value>WriteMapNullValue</value> -->
<!-- Date的日期转换器,这个只有默认yyyy-MM-dd HH:mm:ss,使用最上的dateFormat即可修改格式 -->
<value>WriteDateUseDateFormat</value>
</list>
</property>
</bean>
</property>
</bean>
注:当属性值为空的时候,fastjson默认是不输出的;
代码注释:
@JSONField(name = "operator")
private String operation="test";
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
//name:json串:"**operator**:test,createTime:'2019-09-21 15:05:31'"
//ordinal:排序,数字越小越前;
//serialize:若serialize = false,序列化时过滤该字段;
//deserialize:若deserialize = false,反序列化时过滤该字段;
注:fastjson的赋值是用get/set方法,和注解无关;