SpringBoot Jackson 实体String “1“/“0“ 转 JSON true/false

SpringBoot Jackson 实体String "1"/"0" 转 JSON true/false

背景:

最近重拾ExtJs,使用ExtJs7.2搭建前端项目,后端服务使用SpringBoot+JWT+MP.在使用ExtJs中Grid表格组件的时候发现了checkcolumn相关问题. 后台服务实体类字段属性为String(对应数据库字段类型为char(1) 0/1 两个值 ),前端要求数据必须是boolean类型.

即   数据库 char(1) ==> 实体类 String ==> 前端 boolean;

讲述一下我的解决方法:

思路: 问题关键在于

a) 实体类 转化 JSON字符串 '1'/'0' ==> true/false    后端服务传输数据到前端(前端数据加载读取)

b) JSON字符串 解析 为实体类 true/false==>'1'/'0'   前端发送数据到后台服务(前端数据修改保存)

考虑使用 @JsonSerialize @JsonDeserialize 这两个注解实现字段的自动转化与解析

 解决方案:

  • 首先数据库字段类型:

 字段名: enabled ,类型 char,长度 1, 默认值 '1'==>  '1':启用;'0':禁用

  • 实体类:
@JsonSerialize(using = NumericBooleanSerializer.class)
@JsonDeserialize(using = BooleanNumericDeserializer.class)
private String enabled;
  •  转化类
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;

public class NumericBooleanSerializer extends JsonSerializer {

    @Override
    public void serialize(String b, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeBoolean(b.equals("1"));
    }
}
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

import java.io.IOException;

public class BooleanNumericDeserializer extends JsonDeserializer {

    @Override
    public String deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {

        return Boolean.valueOf(jp.getText()) ? "1" : "0";
    }
}

名字起的有点问题,因为以开始是Integer类型转true/false,后来修改为String类型.

看下最终效果:

加载时:

SpringBoot Jackson 实体String “1“/“0“ 转 JSON true/false_第1张图片

修改时:

SpringBoot Jackson 实体String “1“/“0“ 转 JSON true/false_第2张图片

 小结: 本编博客只是提供了一种方法一种思路.当然方法有很多,新定义JacksonConfiguation也可以.

你可能感兴趣的:(Spring,extjs,MySql,extjs,1,0,true,false,Jackson,转化)