后端-反序列化

package com.emax.zhenghe.common.deserializer;

import cn.hutool.core.collection.CollectionUtil;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
import org.apache.commons.lang.StringUtils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 将List String 类型字段转为 List Long 类型
 *
 * @author zhuzhibin
 * @create 2024-07-18 10:11
 */
@JacksonStdImpl
@Deprecated
public class ToListLongDeserializer extends JsonDeserializer<List<Long>> {

    @Override
    public List<Long> deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        if (StringUtils.isBlank(jsonParser.getText())) {
            return null;
        }
        JsonNode node = jsonParser.getCodec().readTree(jsonParser);
        List<Long> lst = null;
        if (node.isArray()) {
            lst = new ArrayList<>();
            for (JsonNode item : node) {
                if(StringUtils.isEmpty(item.asText())){
                    continue;
                }
                try{
                    lst.add(Long.valueOf(item.asText()));
                } catch (NumberFormatException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        //添加这行的代码 主要是 35行 把所有的数据 全给过滤掉了
        if(CollectionUtil.isEmpty(lst)){
            return null;
        }
        return lst;
    }

}
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值