java - 覆盖全局 jackson 配置

标签 java jackson

我的应用程序 null 值不会被序列化为 json,这没问题。但在一种特定情况下,我希望将空值发送给客户端。我怎样才能做到这一点?

class User  {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

对于这个类,我尝试使用 JsonInclude.Always,但其默认值稍后会在配置中被覆盖。

最佳答案

使用JsonIninclude注释。示例:

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Test {

    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        mapper.setSerializationInclusion(Include.NON_NULL);

        System.out.println(mapper.writeValueAsString(new User()));
    }
}

@JsonInclude
class User  {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

上面的代码打印:

{"name":null}

JsonInclude 中的默认值为 ALWAYS:

/**
 * Inclusion rule to use for instances (values) of types (Classes) or
 * properties annotated.
 */
public Include value() default Include.ALWAYS;

其他选项是使用 JsonSerialize 注释:

@JsonSerialize(include = Inclusion.ALWAYS)
class User  {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

结果与 JsonInclude 相同。

关于java - 覆盖全局 jackson 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54782829/

相关文章:

java - 如何在 ClientConfig 上注册 JacksonFeature

Java SimpleDateFormat 不给出恒定结果

java - jackson Jersey JSON

java - 在 Jersey 中为 REST API 处理完整和部分 View

spring - 处理@RepositoryRestResource 中的多对多关系

java - 使用 Jackson 对不同请求的单个实体的不同属性进行 JSON 序列化

java - 创建动态增长的数组所需的工作单元

java - SQL Server 2008 镜像使用什么机制来通知驱动程序主数据库已故障转移?

java - 包含所有字母的不同字符的最短子字符串的长度

java - 无法从 try-catch 嵌套 for 循环中提取字符串