JSONPath 从嵌套 json 中获取多个值

标签 json jsonpath json-path-expression

我在一个字段中有一个嵌套的 JSON,其中包含我想要作为数组检索的多个重要键:

{
  "tasks": [
    {
      "id": "task_1",
      "name": "task_1_name",
      "assignees": [
        {
          "id": "assignee_1",
          "name": "assignee_1_name"
        }
      ]
    },
    {
      "id": "task_2",
      "name": "task_2_name",
      "assignees": [
        {
          "id": "assignee_2",
          "name": "assignee_2_name"
        },
        {
          "id": "assignee_3",
          "name": "assignee_3_name"
        }
      ]}]}

到目前为止我尝试过的所有查询 fx ( $.tasks.*.assignees..id) 和许多其他查询都已返回

[
  "assignee_1",
  "assignee_2",
  "assignee_3"
]

但我需要的是:

[
  ["assignee_1"],
  ["assignee_2", "assignee_3"]
]

是否可以在不涉及第三方工具的情况下使用 JSONPath 或其内部的任何脚本?

最佳答案

您面临的问题是 tasks受让人 是数组。您需要使用 [*] 而不是 .* 来获取数组中的项目。所以你的路径应该是这样的

$.tasks[*].assignees[*].id

您可以尝试一下 https://json-everything.net/json-path .

注意我网站的输出将为您提供值及其在原始文档中的位置。

编辑

(我没有读完整的内容:))

你将无法获得

[
  ["assignee_1"],
  ["assignee_2", "assignee_3"]
]

因为,正如 @Tomalak 提到的,JSON Path 是一种查询语言。它将删除所有结构并仅返回值。

关于JSONPath 从嵌套 json 中获取多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71951189/

相关文章:

Json 路径 - 对列表列表进行过滤

Python,jsonpath_ng : Exception: Parse error at 1:4 near token ?(?)

php - 解码 while 循环中获取的值

javascript - 遍历嵌套的 json 对象数组

jquery - 使用 jsonpath 进行字符串搜索

json - 如何在 bigquery 的重复结构中查找最后一项

java - JsonPath:按数组中任意数组中的值进行过滤

java - 将 Mockito 用于 HTTP 客户端

ruby-on-rails - 使用 jbuilder 在父文件夹中呈现特定部分