fastjson2 [FEATURE]NotWriteNullString

svmlkihl  于 2022-10-25  发布在  其他
关注(0)|答案(3)|浏览(507)

请描述您的需求或者改进建议

  • 对您想要需求或建议的清晰简洁的描述。*

如果 String 字段为 null,则不输出该字段
目前如果要实现需要设置 JSONWriter.Feature.NotWriteDefaultValue
需求是 boolean 字段为 false 时仍然需要输出的
但是 NotWriteDefaultValue 把所有 DefaultValue 绑架了 要么都不输出 要么都输出

请描述你建议的实现方案

  • 对您想要需求或建议的实现方案的详细描述。*

增加 Feature NotWriteNullString 当 String 字段为 null 时不输出
这样不会影响 boolean: false int:0 之类的
int 值为 0 不一定没有含义 但是 String 为 null 一定没有含义

描述您考虑过的替代方案

  • 对您考虑过的任何替代解决方案或功能的描述。*
附加信息
  • 如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。*
wgmfuz8q

wgmfuz8q1#

缺省Null值是不输出的,这个不能满足要求么?

dfty9e19

dfty9e192#

缺省 Null 值是不输出的,但是我配置了一些 Write Feature 之后就不行了,但是这个 Feature 和 String 无关啊,可能是个 Bug?
看看是什么原理 @wenshao

Response.java

public class Response implements Serializable {
    private static final long serialVersionUID = 1L;

    /**

* successful
* /

    private boolean success;

    /**

* error code
* /

    private String errCode;

    /**

* error message
* /

    private String errMessage;

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public String getErrCode() {
        return errCode;
    }

    public void setErrCode(String errCode) {
        this.errCode = errCode;
    }

    public String getErrMessage() {
        return errMessage;
    }

    public void setErrMessage(String errMessage) {
        this.errMessage = errMessage;
    }
}
public static void main(String[] args) {
    Response response = new Response();
    response.setSuccess(true);

    // {"success":true}
    System.out.println(JSON.toJSONString(response));

    // {"errCode":null,"errMessage":null,"success":true}
    System.out.println(JSON.toJSONString(response, JSONWriter.Feature.WriteNullListAsEmpty));

    // {"success":true}
    System.out.println(JSON.toJSONString(response, JSONWriter.Feature.BrowserCompatible));
}
vhipe2zx

vhipe2zx3#

如何,能否确定是什么问题? @wenshao

相关问题