fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

[BUG]JSON.toJSONString配合PropertyPreExcludeFilter后null值的Double会被序列化

Open Edian-Midir opened this issue 1 month ago • 6 comments

问题描述

JSON.toJSONString配合PropertyPreExcludeFilter一起使用在序列化时Double是null也会被序列化到JSON

环境信息

请填写以下信息:

  • JDK信息: [e.g.:Openjdk 11.0.19]
  • 版本信息:[e.g.:Fastjson2 2.0.58]

重现步骤

如何操作可以重现该问题:

PropertyPreExcludeFilter PROPERTY_PRE_EXCLUDE_FILTER = new PropertyPreExcludeFilter().addExcludes("id","suWorkRecordId");
JSON.toJSONString(result,PROPERTY_PRE_EXCLUDE_FILTER);

期待的正确结果

null值的double不会被序列化

附加信息

  • 暂时发现有Double
  • Integer值null会被正确排除
  • 直接使用JSON.toJSONString(result)可以正确排除Double

Edian-Midir avatar Nov 07 '25 03:11 Edian-Midir

PropertyPreExcludeFilter 可以提供下吗?

jujn avatar Nov 07 '25 03:11 jujn

PropertyPreExcludeFilter 可以提供下吗?

重現步驟 PropertyPreExcludeFilter PROPERTY_PRE_EXCLUDE_FILTER = new PropertyPreExcludeFilter().addExcludes("id","suWorkRecordId"); JSON.toJSONString(result,PROPERTY_PRE_EXCLUDE_FILTER);

Edian-Midir avatar Nov 07 '25 03:11 Edian-Midir

PropertyPreExcludeFilter 不是 fastjson2 内置类啊。你可以看下这个类的导包,是自定义实现的,还是来自第三方库?

jujn avatar Nov 07 '25 03:11 jujn

PropertyPreExcludeFilter 不是 fastjson2 内置类啊。你可以看下这个类的导包,是自定义实现的,还是来自第三方库?

不好意思,忘了; PropertyPreExcludeFilter 是继承的com.alibaba.fastjson2.filter.SimplePropertyPreFilter, 里面加了一个addExcludes方法来简化add字段,没其他的了

public class PropertyPreExcludeFilter extends SimplePropertyPreFilter
{
    public PropertyPreExcludeFilter()
    {
    }

    public PropertyPreExcludeFilter addExcludes(String... filters)
    {
        for (String filter : filters) {
            this.getExcludes().add(filter);
        }
        return this;
    }
}

Edian-Midir avatar Nov 07 '25 04:11 Edian-Midir

ok,感谢反馈,经测试2.0.58确实有问题,不过2.0.60已修复,请用新版本

jujn avatar Nov 07 '25 05:11 jujn

ok,感谢反馈,经测试2.0.58确实有问题,不过2.0.60已修复,请用新版本

好的,謝謝

Edian-Midir avatar Nov 07 '25 06:11 Edian-Midir