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

如果满足某个条件,杰克逊是否可以不序列化JSON条目?

梁浩涆
2023-03-14

我有以下JSON列表:

[
    {
        "name": "John Doe The First",
        "age": 36
    },
    {
        "name": "John Doe The Second",
        "age": 10
    }
]

和下面的Java记录:

public record Person(String name, int age) {}

Jackson是否有可能不解析与18岁以下等条件匹配的JSON条目,而无需编写消费者并过滤掉这些JSonNodes,如本答案所示?

我想要的是在第三个描述,直到现在,最后一个评论这个答案。

共有1个答案

公孙胡媚
2023-03-14

您要求的是过滤解析文件返回的条目,但您希望在解析器(Jackson)有机会读取文件之前执行过滤。这是不可能的。

您必须扫描输入流并检测男孩的年龄是否合适。如果没有,您可能希望跳过这个条目,对下一个实体执行解析。但是你知道要跳过多少字节吗?所有这些都是解析器的工作。

最好先解析JSON,然后在应用程序开始处理它之前执行过滤。

 类似资料:
  • 有没有办法让Jackson序列化某个流对象(并在之后关闭)?这样地: 使现代化 澄清:我想流式传输内容,而不仅仅是将其序列化到单个String对象。

  • 问题内容: 我可以有条件地使用@JsonUnwrapped吗?我不想在序列化过程中使用它,但想在反序列化对象时使用它。 一种实现方法是创建两个不同的类或创建一个子类,该子类仅覆盖需要在序列化和反序列化时表现不同的属性。这听起来不对。还有其他替代方法或Jackson的解决方法吗? 问题答案: 您可以使用MixIn功能。使用此要素类与注释分离。您可以使用在运行时中添加必要的注释。请参见以下示例: 上面

  • 我正在调用一个返回JSON的endpoint,它看起来像这样(在Postman中): 此请求返回的Content-Type头是(与通常的 类来自外部库(编写这个endpoint的人)。无论如何,当我试图通过< code > rest template . exchange()调用这个endpoint时,Jackson都无法将这个JSON反序列化为一个有效的< code>Result类。我正在这样做

  • 我试图让下面的例子工作: 然而,它失败了 从这个答案中,我尝试了类似这样的做法: 但这失败了: 由于我正在处理的项目的限制,我无法修改对象映射器。所以我不能简单地做: 这本来是可行的。 还有其他简单的方法可以让ImmutableList反序列化工作吗? 编辑:我设法得到了一个不同的错误,如下所示: 这引发了: 如果我可以为ImmutableListDeserializer或类似的东西构建一个无参数

  • 问题内容: 我有一个这样的模型: 例如,我从远程获取以下JSON: 当我反序列化此JSON时,and 变量将获得正确的值。但是,我不想解释变量的内容。相反,我希望它是以下字符串: 之后,我将自己解释。我如何获得这个值? 问题答案: Jackson问题596是为原始问题中描述的所需功能而创建的。如果要实施,请投票。 当前可用的解决方案是实现自定义反序列化处理。

  • 问题内容: 这是我的Java代码,用于反序列化,我正在尝试将json字符串转换为java对象。为此,我使用了以下代码: 和我的product.java类 我收到以下错误。 帮我解决这个问题 问题答案: 似乎您正在尝试从JSON读取一个实际描述数组的对象。Java对象使用花括号映射到JSON对象,但是您的JSON实际上以方括号指定一个数组开始。 您实际拥有的是一个。为了描述泛型类型,由于Java的类