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

杰克逊对象映射器:如何省略(忽略)空数组元素 [空]

党俊健
2023-03-14

我有一个Json数组,数组中包含< code>null值。

{
  myArray: [ null ]
}

如何配置Jackson ObjectMapper以忽略此类null数组元素-就好像它是空数组[]

约束:

  • 没有控制源类-它是第三方类
  • 数组元素类型前期未知
  • 数组名称前面未知

共有2个答案

潘驰
2023-03-14

也许@ JsonIclude管用?

   @JsonInclude(value=Include.NON_EMPTY, content=Include.NON_NULL)

http://fasterxml.github.io/jackson-annotations/javadoc/2.9/com/fasterxml/jackson/annotation/JsonInclude.html?is-外部=真

宣意致
2023-03-14

您可以使用JsonSetter注释中的contentNulls属性。您的POJO类可能如下所示:

class ArrayWrapper {
    private List<String> myArray;

    @JsonSetter(contentNulls = Nulls.SKIP)
    public void setMyArray(List<String> myArray) {
        this.myArray = myArray;
    }

    public List<String> getMyArray() {
        return myArray;
    }
}

另请参见:

  • 如何使用Jackson排除空列表项
 类似资料:
  • 问题内容: 我有一个JSON对象,例如: 要么 要么 等等 我正在尝试将上述JSON映射到: 上面的映射工作正常,但是将来会有更多的“ Grade”类型让我们说D,E等,这会破坏现有的映射并引发以下异常 有没有办法忽略带有枚举类型的未知字段? 谢谢 问题答案: 我认为您应该为枚举定义外部解串器。 我在枚举中添加了其他字段-未知: 现在,解析器可能看起来像这样: 用法示例: 输出: 如果您不想添加其

  • 问题内容: 在反序列化过程中(据我了解,这是将JSON数据转换为Java对象的过程),我如何告诉杰克逊,当它读取不包含数据的对象时,应将其忽略吗? 我正在使用Jackson 2.6.6和Spring 4.2.6 我的控制器收到的JSON数据如下: 问题是对象“ containedObject”按原样解释,并且正在实例化。因此,一旦我的控制器读取此JSON数据,它就会生成ContainedObjec

  • 问题内容: 我有以下json文件: 但是java模型如下: Jackson解析时会引发异常,因为“ externalId”字段没有getter或setter方法。有没有可以用来忽略json字段的装饰器? 问题答案: 您可以使用注释;如果这只是您要跳过的一个值,则类似于: 或忽略任何无法使用的东西: 还有其他方法可以做到这一点,其余的请查看FasterXML Jackson wiki 。

  • 我将 Jackson 2.7.5 与 Jersey 2.25.1 配合使用。我正在尝试修复现有的生产代码,当它在JSON输入中获得意外字段时,它现在因“无法识别的PropertyException:无法识别的字段”而失败。 在研究这个问题时,我发现了几篇旧帖子(5年),建议各种修复方法与我当前的代码非常不同。我不太关注这些,因为它们是针对旧版本的Jackson/Jersey。最近的建议,包括泽西岛

  • 因此,有一个的实例,其中为空,这正是Jackson返回的内容: 我希望json没有空括号: 这个问题对我没有帮助: null

  • 问题内容: 我在使用Jackson映射Javascript发布的哈希表(标记)数组时遇到问题。 这是控制器@RequestBody接收到的数据(以正确的json requestheader发送): 这是控制器: 当我调试并查看“实体”值时,它显示为通用对象的ArrayList,而不是我期望的“标签”类型的对象列表。 我如何让杰克逊将传递的对象数组映射到“标签”类型的对象列表? 谢谢 问题答案: 听