fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

[QUESTION]对象中有Empty数组、Empty字符串等字段转成jsonString 这些字段不显示怎么办?需要加什么Feature才能让显示呢?

Open asd123wto opened this issue 1 year ago • 4 comments

请描述您的问题

对象中有Empty数组、Empty字符串等字段转成jsonString 这些字段不显示怎么办?需要加什么Feature才能让显示呢? 挨个试了一遍都不行 版本:2.0.52

asd123wto avatar Aug 27 '24 08:08 asd123wto

用这个 Feature.IgnoreEmpty

wenshao avatar Aug 28 '24 00:08 wenshao

用这个 Feature.IgnoreEmpty

不行啊。我是想显示空的数组,不是忽略空的字段

asd123wto avatar Aug 28 '24 01:08 asd123wto

用这个 Feature.IgnoreEmpty

找到原因了,类使用了jackson的注解去掉就好了 @JsonInclude(JsonInclude.Include.NON_EMPTY)

现在的FastJson2会被jackson的注解影响了吗?

asd123wto avatar Aug 28 '24 03:08 asd123wto

`import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONWriter; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; import lombok.Setter;

import java.util.ArrayList; import java.util.List;

public class Test {

@Getter
@Setter
public static class DemoClass extends BaseClass {
    private List<String> array = new ArrayList<>();
    private String title;
    private String value = "";
}

@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public static class BaseClass {
    private List<String> baseList = new ArrayList<>();
    private String baseTitle;
    private String baseValue = "";
}

public static void main(String[] args) {
    DemoClass accidentManageRes = new DemoClass();
    System.out.println("FastJson2: "+JSON.toJSONString(accidentManageRes,
            JSONWriter.Feature.WriteNullStringAsEmpty));
    System.out.println("FastJson1: "+com.alibaba.fastjson.JSON.toJSONString(
            accidentManageRes, SerializerFeature.WriteNullStringAsEmpty));
}

}`

FastJson2: {"baseTitle":"","title":""} FastJson1: {"array":[],"baseList":[],"baseTitle":"","baseValue":"","title":"","value":""}

fastJson1 就不受jackson注解的影响

asd123wto avatar Aug 28 '24 03:08 asd123wto