[alibaba/fastjson]反序列化的时候不需要字段的默认值,有没有办法可以去除字段的默认值?

2024-05-23 364 views
5

反序列化的时候不需要字段的默认值,有没有配置可以去除?

    public <T> Optional<T> toObject(Object obj, Class<T> cls) {
        try {
            if (obj instanceof String) {
                return Optional.of(JSON.parseObject((String) obj, cls));
            }
            String da = JSON.toJSONString(obj);
            T t = JSON.parseObject(da, cls);
            log.error("原始值-{}-转换后的值-{}", da, JSON.toJSON(t));
            return Optional.of(t);
        } catch (Exception e) {
            log.error("HibernateNativeExecutor.toObject error-{}-{}", obj, cls, e);
        }
        return Optional.empty();
    }

image

传入

{"code":"K33514912188900"}

返回了默认值

{"code":"K33514912188900","fatherCode":"Root","sort":0,"enabled":true}

有办法去除吗?

字段 类型 默认值
fatherCode String Root
sort Integer 0
enabled Boolean true

反序列化的时候不需要字段的默认值,有没有配置可以去除?

回答

6

@easysdk 不要在POJO内给任何字段默认值,违背编码规范。 同时,字段的类型要使用封装类型,不要使用基础类型,例如:int 错误,Integer 正确。 int的默认值为0, integer的默认值为NULL。 JSON序列化的时候,默认NULL字段是不输出的。

8

@mingkaili 主要是问题已经出现了,怎么解决,很多地方都有使用到,fastjson可以处理此类问题吗?能不能支个招?

2

同问,不知道问题解决了没?