我在一个字段中有一个嵌套的 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/