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

在嵌套JSON数组上过滤:保证Rest

白才捷
2023-03-14

我试图根据嵌套的JSON数组中的值过滤我的GET response(JSON)。例如:在下面的JSON中,我想过滤一个JSON数组,并用巧克力作为面糊打印出蛋糕的名称。

{
"id": "0001",
"type": "donut",
"name": "Choco Blueberry Cake",
"ppu": 0.55,
"batter":[
         { "id": "1001", "type": "Regular" },
         { "id": "1002", "type": "Chocolate" },
         { "id": "1003", "type": "Blueberry" }
 ]
}

我尝试过这样的事情:

List<String> chocolateCakeList =jsonPath.getList("findAll{it.batter.type=='chocolate'}.name");

List<String> chocolateCakeList =jsonPath.getList("findAll{it.batter.it.type=='chocolate'}.name");

两者都返回空列表。

共有1个答案

陈坚
2023-03-14

问题

> < li>

首先,如果您要使用< code>findAll,那么要进行收缩的对象必须是一个数组。你的json是object {},不是array []。实际上,您的嵌套对象< code>batter是一个数组[]。

要搜索的关键词是巧克力,而不是巧克力。此处应用区分大小写。

解决方案

-如果您的整个回复与您发布的完全一致,那么提取的路径是

String name = jsonPath.getString("name")

-如果你的回答有这样的结构。

[
  {
    "id": "0001",
    "type": "donut",
    "name": "Choco Blueberry Cake",
    "ppu": 0.55,
    "batter": [
      {
        "id": "1001",
        "type": "Regular"
      },
      {
        "id": "1002",
        "type": "Chocolate"
      },
      {
        "id": "1003",
        "type": "Blueberry"
      }
    ]
  },
  {
    "id": "0002",
    "type": "donut",
    "name": "Choco Blueberry Cake",
    "ppu": 0.55,
    "batter": [
      {
        "id": "1001",
        "type": "Regular"
      },
      {
        "id": "1002",
        "type": "Chocolate 2"
      },
      {
        "id": "1003",
        "type": "Blueberry"
      }
    ]
  }
]

那么提取是

List<String> list = jsonPath.getList("findAll {it.batter.findAll {it.type == 'Chocolate'}}.name");
 类似资料:
  • 问题内容: 我有一个从数据库(JSON MySQL中的数据存储)检索数据的程序。 我设法得到对象。输出为: JSON对象: 我需要有关如何处理数据并将信息放入不同数组/对象的建议。例如 谢谢。 问题答案: 您可以使用Jackson Api来实现。 您必须创建与json对象相同的Pojo类(该类应具有“ attributes”,“ uuid”之类的成员)。 这是您必须使用的类 和代码 现在,您可以使

  • 问题内容: TL; DR -我该如何检查是否 之一的 和 所有的 嵌套数组满足规定的标准是什么? 我有一个。每个对象都有一个嵌套对象数组,这些对象本身都有一个嵌套对象列表。我需要对所有文档中 至少一个嵌套对象匹配的文档执行过滤器。当我说的比赛,我的意思是 所有 的嵌套对象的对象以某种方式相匹配。这是一个示例映射,以供参考; 如果文档没有/ 对象,则认为是匹配的。但是,更糟糕的是,内部对象需要考虑以

  • 我有一个带有嵌套数据的ES索引,它是这样映射的 我想创建一个对两个(原始)值进行筛选的查询。我可以创建一个筛选器,对这些值之一进行筛选,如下所示: 然而,我需要的是这样的东西: 第一个查询有效,第二个查询引发错误: 嵌套:QueryParsingException[[ocm][nested]筛选器不支持[null]]; 如何创建匹配多个路径中的字段的筛选器?

  • 问题内容: 这是我的表(简体,仅重要的列): 以及一些样本数据: 我想选择键下任意位置的行。像这样的东西: 数据完全像样本中一样嵌套(仅一层)。 当前,我们正在使用PostgreSQL 9.3.5。 在PostgreSQL 9.3中可以吗?也许是9.4? 问题答案: 您的查询已关闭。 是关键功能。还是为了。进行了一些改进: 旧的sqlfiddle db <> fiddle在这里 已经返回该值作为数

  • 这是我的数据: 我想删除数组元素,如果没有selectedProducts.id 所以结果应该是: 这就是我所尝试的: 我的结果是错误的,我得到的结果是空数组:

  • 太长别读-如何检查一个嵌套数组和所有嵌套数组是否满足指定的条件? 我有一个。每个都有一个嵌套的对象数组,这些对象本身有一个嵌套的对象列表。我需要对所有文档执行一个过滤器,其中至少有一个文档的嵌套对象匹配。当我说匹配时,我的意思是所有嵌套对象的对象以某种方式匹配。这里有一个示例映射供参考; 如果文档没有< code >外部/对象,则认为它匹配。但更糟糕的是,内部对象需要被认为以一种条件逻辑方式(例如