Java JsonNullable未使用Jackson序列化其值

Java JsonNullable未使用Jackson序列化其值,java,json,Java,Json,我试图使用JsonNullable来区分没有值和null。当我序列化Java对象时,User,JsonNullable字段被序列化为具有值的JSON对象 {"present":false} 我希望它打印{},因为我用未定义的初始化了字段 这是我的课 public class User { @JsonProperty("userId") private JsonNullable<String> userId = JsonNullable.undefined(); //

我试图使用
JsonNullable
来区分没有值和
null
。当我序列化Java对象时,
User
JsonNullable
字段被序列化为具有值的JSON对象

{"present":false}
我希望它打印
{}
,因为我用
未定义的
初始化了字段

这是我的课

public class User { 
  @JsonProperty("userId")
  private JsonNullable<String> userId = JsonNullable.undefined();

  //set and get
  //tostring
}
这张照片

{"userId":{"present":true}}
但我预料

{"userId":"12345"}
换句话说,我希望包装在
JsonNullable
中的值被序列化为JSON。为什么
JsonNullable
和Jackson会这样做?

按照说明,您需要注册相应的模块(除了您拥有的任何其他模块之外):

ObjectMapper ObjectMapper=new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
registerModule(新的JsonNullableModule());

在Spring Boot中添加以下配置:

@Configuration
public class JacksonConfiguration {
    @Bean
    public JsonNullableModule jsonNullableModule() {
        return new JsonNullableModule();
    }
}
@Configuration
public class JacksonConfiguration {
    @Bean
    public JsonNullableModule jsonNullableModule() {
        return new JsonNullableModule();
    }
}