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

本文介绍如何在SpringBoot项目中使用自定义序列化和反序列化类,将实体类中的String类型的“1”和“0”分别转换为前端所需的boolean类型的true和false。这种方法适用于后端char类型字段与前端boolean类型数据的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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<String> {

    @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<String> {

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

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

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

看下最终效果:

加载时:

修改时:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sword_happy

您的鼓励亦是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值