当前位置: 首页 > 知识库问答 >
问题:

JsonNullable未使用Jackson序列化其值

秦锐
2023-03-14

我正在尝试使用JsonNullable

{"present":false}

我希望它打印出来,因为我用未定义的字段初始化了字段。

这是我的课

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

  //set and get
  //tostring
}

还有一个小的驱动程序,我实际上在JsonNullable字段中设置了一个值。

User user = new User();
user.setUserId(JsonNullable.of("12345"));

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new Jdk8Module());

String expectedData = objectMapper.writeValueAsString(user);
System.out.println(expectedData);

这张照片

{"userId":{"present":true}}

但我预料到

{"userId":"12345"}

换句话说,我期望包装在JsonNullable中的值被序列化到JSON中。为什么JsonNullable和Jackson会这样做?

共有2个答案

孟韬
2023-03-14

在Spring Boot中添加以下配置:

@Configuration
public class JacksonConfiguration {
    @Bean
    public JsonNullableModule jsonNullableModule() {
        return new JsonNullableModule();
    }
}
袁英豪
2023-03-14

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

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.registerModule(new JsonNullableModule());
 类似资料:
  • 根据这里描述的内容,我应该使用JSR-310表示而不是数字表示来序列化对象。但是,我得到了数字表示。可能有什么问题? 我是这样配置我正在使用的映射器的: 这是我得到的反序列化示例 对于以下事例类:

  • 我想将json反序列化到类Foo: IBar有两个实现,但是当反序列化时,我总是想使用第一个实现。(理想情况下,这将使问题变得更容易,因为不需要运行时类型检查) 我相信我可以编写自定义反序列化程序,但我觉得一定有更简单的方法。 我找到了这个注释,它在没有列表的情况下非常有效。

  • 问题内容: 在Apache Jackson和Jackson一起使用Apache Jersey进行JSON序列化时(在服务器和客户端上),在反序列化通用List时遇到问题。 我正在生成的JSON如下,“数据”中的所有3个类都实现“ CheckStatusDetail”: 产生此JSON的对象如下所示,我在客户端使用相同的类: 自从我将此注释添加到我的CheckStatusDetail接口后,就应用了

  • 添加到DTO对象后,我想向服务器发送一个列表 从…起 当向控制器发送对象时,它会抛出

  • 我正在尝试在SpringBoot应用程序中编写Jackson反序列化器模块。主要原因是使用自定义Jackson反序列化程序对传入请求中的pin码进行加密。加密属性由spring组件 我试图从这个解决方案,但我的自定义反序列化程序仍然没有调用。而不是基于此,始终调用,并且不执行加密 提前谢谢 注释: 带有要加密字段的请求正文 杰克逊构型 模块: 最后反序列化器:

  • 我的Spring Boot应用程序使用了一个用和注释的类: 现在我想使用一个(私有)REST接口来读取和更新这些配置属性,所以我创建了以下控制器。 不幸的是,这似乎不起作用,因为我在调用endpoint时遇到以下异常: 当出于测试目的删除注释和时,序列化工作正常。所以它似乎必须要做一些事情来处理类是bean?