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

Jackson序列化:忽略未初始化的int

艾骏
2023-03-14

首先,我在这个网站上读了一些其他的答案,还有一些关于jackson序列化的答案,但它们都提供了忽略null字段的方法。但是,在Java中,int不能为null

    private ObjectWriter mapper = new ObjectMapper().writer();
    private myClass data = new myClass(); //class contains a string and int variable
    data.setNumber(someInt); //set values
    data.setString(someString);

    String Json = mapper.writeValueAsString(data);

共有1个答案

井誉
2023-03-14

使用Jackson JsonInclude注释:

@JsonInclude(Include.NON_DEFAULT)

解决未分配的基元类型总是假定默认值的问题;在这种情况下,未分配的ints变为0并随后被忽略。

 类似资料:
  • 问题内容: 现在,首先,我已经在该站点上阅读了其他答案,以及有关杰克逊序列化的其他答案,但它们都提供了忽略字段的方法。但是,在Java中,不能为。 我正在尝试将Java对象转换为,但忽略任何字段。这适用于字符串,但最终会采用if 值(如果未初始化),因为not 不会被忽略。 谁能对此有所启发? 编辑:为澄清起见,我尝试使用该类作为数据类型,但导致转换为字符串以引发JsonProcessingExc

  • 我使用Spring并创建了一个REST服务。 这是我的控制器的一部分: 该人员的角色是延迟初始化的,当时不需要。当(1)被注释掉时,所有操作都将失败 org.springframework.http.converter.HttpMessageNotWritableException:无法写入JSON:无法延迟初始化角色集合:no.something.project.Person.roles,无法初

  • 问题内容: 我使用以下代码来序列化从外部服务获得的响应,并作为我的服务的一部分返回json响应。但是,当外部服务返回带有时区(10:30:00.000-05.00)的时间值时,杰克逊会将其转换为15:30:00。如何忽略时区值? 问题答案: 您可以创建自定义解串器 告诉杰克逊使用您的自定义解串器 并像这样使用它: 您可以使用Jackson自定义序列化为服务响应添加时区信息

  • 我有一个这样的对象: 我是否可以使用和我的条件来仅在不为负数的情况下包含该值?或者有没有其他的解决办法我可以做到这一点?

  • 在这种情况下,如果验证失败,我希望将请求返回给用户,并附上相应的错误消息。我遇到的问题是,我使用Jackson处理JSON请求,验证失败也会导致Jackson无法序列化消息。 例如,如果我有此对象: ...当我去序列化时,字段无效(假设它有11个字符)... ...我得到了一个JsonProcessingException(错误验证对象)。我已经确认一个有效的对象序列化没有问题。所以我的问题是:我

  • 问题内容: 我有一些扩展的模型类:它们定义用于包装Map的get和put方法的getter和setter。我正在尝试使用Jackson(带有RESTEasy)序列化这些类的实例,但是Jackson拒绝注意我的getter(使用注释)。而是仅序列化支持映射的键- 值对。我尝试使用禁用所有方法和字段的自动检测功能,但这并没有任何改变。有没有办法防止Jackson序列化Map,还是必须创建不扩展的新模型