接上一篇–Jackson:Json处理
对于Json的序列化,FastJson的功能比Jackson要好,如果不想使用Jackson,则也可以按照其他的Json处理方案如:FastJson
1. 安装FastJson
1.1 导入依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
1.2 安装FastJson
在mvc.xml文件的注解驱动标签中加一个子标签
<!-- 注解驱动-->
<mvc:annotation-driven>
<!--安装FastJson,转换器-->
<mvc:message-converters>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<!--声明转换类型-->
<property name="supportedMediaTypes">
<list>
<value>application/json</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
1.3 User添加注解
public class User2 {
@JSONField(serialize = false)
//serialize:当前属性不进入json序列化
private Integer id;
@JSONField(name = "NAME",serialzeFeatures = SerializerFeature.WriteNullStringAsEmpty)
//name:属性改名;serialzeFeatures:如果name属性值为空,也输出,输出"",空字符串
private String name;
@JSONField(serialzeFeatures = SerializerFeature.WriteMapNullValue)
//serialzeFeatures:如果city属性的值为空,也输出,输出一个null
private String city;
@JSONField(format = "yyyy/MM/dd")
//serializeUsing:日期的格式化
private Date birth;
@JSONField(serializeUsing = MySerializer2.class)
private Double salary;
//get set 构造方法
}
1.4 MySerializer2.java序列化salary
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import java.io.IOException;
import java.lang.reflect.Type;
public class MySerializer2 implements ObjectSerializer {
@Override
public void write(JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i) throws IOException {
Double value = (Double) o;//o: salary属性值
String text = value+"元";
jsonSerializer.write(text);
}
}
- Controller
@RequestMapping("/json")
@RestController
public class JSONController {
@RequestMapping("/test3")
public User2 test3(){
User2 user2 = new User2(1,null,null,new Date(),22222.38);
System.out.println(user2);
return user2;
}
}