栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

自定义反序列化规则--Java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自定义反序列化规则--Java

反序列化器
针对从前端或Postman获取的数据,定义转换规则

1.自定义Boolean值判定规则

使用方法:需要判断的字段上添加

@JsonDeserialize(using = BooleanDeserializer.class)

自定义规则代码
重载 deserialize方法
示例代码:0, false 为假 1, true为真

public class BooleanDeserializer extends JsonDeserializer {
    private static final String TRUE = "true";
    private static final String FALSE = "false";
    private static final String ZERO = "0";
    private static final String ONE = "1";

    @Override
    public Boolean deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        String text = StringUtils.defaultIfBlank(jsonParser.getText(), "").trim();

        if (StringUtils.isBlank(text)) {
            return null;
        }

        if (TRUE.equalsIgnoreCase(text) || ONE.equalsIgnoreCase(text)) {
            return true;
        }

        if (FALSE.equalsIgnoreCase(text) || ZERO.equalsIgnoreCase(text)) {
            return false;
        }
    }
 }

2.指定null值转化规则

当前端或Postman发送的body体内,存在一个字段的值为null
如:{"name":null}
为了区分于不发送,自定义判定及转化规则

需要重载 deserialize 和 getNullValue 方法

使用@JsonDeserialize(using = ListStringNullAwareDeserializer.class)
自定义及转换,用法与第一个相同

public class ListStringNullAwareDeserializer extends JsonDeserializer> {

    @Override
    public List deserialize(JsonParser jsonParser,
                            DeserializationContext deserializationContext) throws IOException {
        String json = jsonParser.readValueAsTree().toString();
        ObjectMapper objectMapper = new ObjectMapper();
        return objectMapper.readValue(json, new TypeReference>() {
        });
    }

    @Override
    public List getNullValue(DeserializationContext ctx) {
        return 发送null时想要得到的数据;
        如 return new ArrayList<>();
    }
}

示例代码意为:发送null时,得到一个空列表

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/930287.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号