java - 如何使用 Jackson 获取嵌套 JsonNode 内的集合

标签 java json jackson

我有一个下面的 JSON 结构。我需要使用 Jackson 库来解析它。我正在构建一个 Web 服务,它在 POST 方法的主体中接受以下 JSON。

{
    "organization": {
        "products": [
            "foo",
            "bar",
            "baz"
        ]
    },
    "mission" : "to be the best in domain"
}

直到现在我有了简单的 JSON 正文,它没有嵌套和 JSON 元素,就像在本例中 organization 是另一个包含一组产品的 JSON 节点。

此 JSON 键不是强制性的,我正在 JsonNode 中接受/存储 organization JSON。并进行以下检查。

  1. 如果组织为空。
  2. 如果 organization 不为 null 并且具有 products 键。

但之后我不知道如何从这个 JsonNode 中获取棋盘集并将其存储在 Java 的 HashSet 中。

我预期的 O/P 应该是从我的组织 JsonNode 中提取一组板。

附注:- 我想我必须使用 ObjectMapper 但找不到获取 Set 的直接方法。看来我需要使用一些我不太熟悉的 JsonParser。

最佳答案

您可以根据您的目的创建 DTO(数据传输对象)。嵌套对象可以具有如下结构:

class Organization {
    List<String> Products;
    .....
}

class WebOrganizationRequest {
    Organization organization;
    String mission;
}

通过以这种方式创建对象,您可以将 JSON 对象映射到类,当您使用 WebOrganizationRequest 作为请求正文类型将 JSON 传递到 Controller 时,Jackson 会将 JSON 类型转换为 WebOrganizationRequest 的实例。

关于java - 如何使用 Jackson 获取嵌套 JsonNode 内的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57457991/

相关文章:

java - Android 使用内容提供程序从 Assets 文件夹发送图像?

java - 计算 MPG 结果出现 java.lang.ArithmeticException : Non terminating decimal expansion; no exact representable decimal result

javascript - 在 JSON 数组中查找项目并将其添加到另一个数组中。 JavaScript

java - 将 ArrayList 传递给 servlet?

android - 无法将 Jackson 库添加到我的 android 项目

json - 使用 Jersey 2.22.1 未获得最新 jackson 的 Json 结果

java - 为什么我的 for 循环在使用 (scanner).nextLine(); 时一次打印 2 个提示

java - 通过 Stanford 解析器提取所有名词、形容词形式和文本

javascript - 遍历数组并将重复项移动到单独的数组

java - 警告 RESTEASY002145 : NoClassDefFoundError