Skip to content

[QUESTION] fastjson1.x和fastjson2.x对字段注解上JSONWriter.Feature.WriteNullNumberAsZero行为不一致,如何兼容? #3702

@huisman6

Description

@huisman6

请描述您的问题

我们应用fastjson1.x升级为fastjson2.x之后,字段注解上的serializeFeatures = JSONWriter.Feature.WriteNullNumberAsZero 失效了,原先fastjson1.x 会正确将所有Number为null时返回0。

当通过 JSON.toJSONString(new NumberDTO(),JSONWriter.Feature.WriteNullNumberAsZero),所有Number为null时会正确返回0;

当通过:JSON.toJSONString(new NumberDTO()) ,即使加了注解,也只有Integer类型的输出0。

请问如何使字段注解上的Feature生效?

@DaTa
public class NumberDTO implements Serializable {
@JSONField(serializeFeatures = JSONWriter.Feature.WriteNullNumberAsZero)
private BigDecimal bigDecimal;
@JSONField(serializeFeatures = JSONWriter.Feature.WriteNullNumberAsZero)
private Integer integer;
@JSONField(serializeFeatures = JSONWriter.Feature.WriteNullNumberAsZero)
private Double wrapperDouble;
@JSONField(serializeFeatures = JSONWriter.Feature.WriteNullNumberAsZero)
private Float wrapperFloat;
@JSONField(serializeFeatures = JSONWriter.Feature.WriteNullNumberAsZero)
private Long wrapperLong;
@JSONField(serializeFeatures = JSONWriter.Feature.WriteNullNumberAsZero)
private Byte byteValue;
@JSONField(serializeFeatures = JSONWriter.Feature.WriteNullNumberAsZero)
private Short wrapperShort;
@JSONField(serializeFeatures = JSONWriter.Feature.WriteNullNumberAsZero)
private BigInteger bigInteger;
@JSONField(serializeFeatures = JSONWriter.Feature.WriteNullNumberAsZero)
private Number number;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    fixedquestionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions