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

使用JSONPath根据对象的一个属性查找对象

张森
2023-03-14

给定以下JSON结构,我希望能够在$中找到条目。数据数组,其中包含具有特定项目ID的项目

{
  "data": [
    {
      "id": "1",
      "items": [{"itemId": "item1"}]
    },
    {
      "id": "2",
      "items": [{"itemId": "item2"}]
    }
  ]
}

假设我正在寻找带有itemId==“item2”的条目——在这种情况下,我想提取完整的对象:

{
  "id": "2",
  "items": [{"itemId": "item2"}]
}

我尝试嵌套$()过滤器,但没有成功:

$.data[?@.items[?(@.itemId == "item2")])]
$.data[?("item2" in @.items[*].itemId)]
$.data[?(@.items[*].itemId contains "item2")]

我可以很容易地通过$. data[*]找到项目对象本身。项目[?(@. itemId=="item2")],但是我想实际上检索它的父对象!这在JSONPath中可能吗?

共有1个答案

孔梓
2023-03-14

在这个具体的例子中,这应该是可行的:

$..data[?(@.items[0].itemId == 'item2')]

结果是一个列表,因为过滤器总是返回列表:

[
  {
    "id": "2",
    "items": [
      {
        "itemId": "item2"
      }
    ]
  }
]

这在这里起作用,因为我们在items数组中取第一个元素,以便应用过滤器(索引[0])。对于更复杂的场景,可能需要进行一些调整。

在这里测试:https://jsonpath.com/

 类似资料:
  • 假设我有一个名为House的对象,它包含一个列表 对于房间,只有一个属性,其值由int表示: 现在,使用Java8,并给出一个带有

  • 问题内容: 我是xpath的新手,尝试使用xpath获取“值”的值: 虽然很容易找到像这样的元素: 我还无法弄清楚如何获得所需的值,例如: 某些预期会产生错误: 任何想法如何解决这个问题? 编辑:xpath是正确的,但是它“返回”了obj属性,并且由于它不是元素,因此不允许使用。我找不到类似get_attr_by_xpath()之类的方法。 问题答案: 我最终用作:

  • 我是xpath的新手,试图使用xpath获取“value”的值: 虽然通过很容易找到元素,但如下所示: 我还没能弄清楚如何获得我需要的值,因为: 有点意外地给出了一个错误: 有什么办法解决这个问题吗? 编辑:xpath是正确的,但它“返回”一个obj属性,因为它不是元素,所以不允许使用。我找不到像get_attr_by_xpath()这样的方法,或者任何类似的方法。

  • 我找到了一个解决方案,但它使用Java-8。

  • 我试图排序基于一个nullable ArrayList在java 8列表。 列表如下 我正在尝试使用streams sort根据患者就诊日期(就诊列表中的第一个元素)的降序对患者对象进行排序。空值应该放在最后。最终结果必须是 我尝试过以下方法,但即使在空检查之后,也会出现空指针异常。

  • 我想要编写一个Spring Data JPA存储库接口方法签名,它将允许我查找实体中具有嵌入对象属性的实体。有没有人知道这是否可能,如果可能,如何实现?