java - 导航到特定的 JSON 节点并使用 ObjectMapper

标签 java jackson

我想使用 Jackson 导航到特定的 JSON,然后通过 ObjectMapper 发送值。如果 JSON 只是一个像这样的简单数组,我目前可以实现此目的:

[
    {
        "parent": "A",
        "child": "B"
    },{
        "parent": "G",
        "child": "K"
    }
]

我的 Java 代码如下所示并且可以运行。

ObjectMapper mapper = new ObjectMapper();
Row[] row;

row = mapper.readValue(json, Row[].class);

但是当 JSON 更加嵌套时,如下所示:

{
    "data": [
        {
            "parent": "A",
            "child": "B"
        },{
            "parent": "G",
            "child": "K"
        }
    ]
}

我不确定需要做什么才能达到相同的效果。

Row 类只是一个标准类,具有父属性和子属性及其 getter 和 setter。没什么特别的。

最佳答案

您可以首先使用 readTree() 获取 JSON 字符串的树表示形式。然后使用 JSON 指针 ( RFC-6901 ) 导航到您要查找的 JsonNode想要开始反序列化。之后,使用 treeToValue() 将树反序列化为 Row[] :

JsonNode rootNode = mapper.readTree(json);
JsonNode dataNode = rootNode.at("/data");
Row[] rows = mapper.treeToValue(dataNode, Row[].class);

关于java - 导航到特定的 JSON 节点并使用 ObjectMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57940271/

相关文章:

java.lang.NoClassDefFoundError : org/springframework/security/authentication/AuthenticationManager 错误

java - 价格值中的 BigDecimal 舍入 : doubleValue() vs setScale(2, BigDecimal.ROUND_HALF_UP)

java - 设置 POST RequestMethod 时发送 GET 请求

java - 使用 Jackson 解析深度嵌套的 JSON 属性

java - 将JSON反序列化为对象封装列表

java - 使用 Jackson 将 JSON 字符串映射到 POJO 给出空值

java - 使用现有的 Spring Security 通过 XML 设置 Spring Session 和 Redis

java - Java 中方法的调用者是什么意思?

java - 为分层 JSON 映射中的特定属性编写 Jackson 自定义反序列化器

spring-mvc - Spring MVC 接收的 JSON 嵌套对象的 Spring Boot JACKSON 配置