@JsonSerialize的使用

Posted 青柳依依

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@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 statusStr;

这样就转换成功了。

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





以上是关于@JsonSerialize的使用的主要内容,如果未能解决你的问题,请参考以下文章

BigDecimal使用@JsonSerialize序列化自定义格式

@JsonSerialize的使用

@jsonserialize在啥时候生效

杰克逊:冲突的@JsonTypeInfo和@JsonSerialize(as = Klass.class)

关于@JsonSerialize注解的使用方法

JsonSerialize的字段[include]已经过时,已被JsonInclude代替