@JsonSerialize的使用

实际开发中,我们一定遇到过这样的问题:前端显示和后台存储数据单位不统一,而且各有各自的理由,统一不了,那就转换吧。

每次返回给前端时再转换一遍,返回给前端的json数据,在后端里定义的往往是一个对象,如何做到优雅的转换呢?只需两步

1. 写一个负责转换的类,里面写好规则
 1 public class MySerializerUtils extends JsonSerializer<Integer> {
 2     @Override
 3     public void serialize(Integer status, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
 4         String statusStr = "";
 5         switch (status) {
 6             case 0:
 7                 statusStr = "暂存";
 8                 break;
 9             case 1:
10                 statusStr = "待上报";
11                 break;
12             case 2:
13                 statusStr = "待审核";
14                 break;
15             case 3:
16                 statusStr = "已审";
17                 break;
18             case 4:
19                 statusStr = "退回";
20                 break;
21             case -1:
22                 statusStr = "已删";
23                 break;
24             default:
25                 statusStr = "状态信息不符合";
26         }
27         jsonGenerator.writeString(statusStr);
28     }
29 }

 

2. 在实体类上需要装换的字段上加上注解
/**
 * 文字型状态值
 */
@JsonSerialize(using = MySerializerUtils.class)
private int status;

这样就转换成功了。

@JsonSerialize注解,主要用于数据转换,该注解作用在该属性的getter()方法上。



posted @ 2018-09-13 15:06  青柳依依  阅读(15268)  评论(1编辑  收藏  举报