实际开发中,我们一定遇到过这样的问题:前端显示和后台存储数据单位不统一,而且各有各自的理由,统一不了,那就转换吧。
每次返回给前端时再转换一遍,返回给前端的json数据,在后端里定义的往往是一个对象,如何做到优雅的转换呢?只需两步
@JsonSerialize注解,主要用于数据转换,该注解作用在该属性的getter()方法上。

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. 在实体类上需要装换的字段上加上注解
  1. /**
  2. * 文字型状态值
  3. */
  4. @JsonSerialize(using = MySerializerUtils.class)
  5. private int status;

这样就转换成功了。