如何使用JSONPath同时提取assignee的id与name字段值
提取所有assignee的id和name字段值(JSONPath实现)
原始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" } ] } ] }
(注:原始输入的JSON存在语法缺失,已补全闭合括号)
当前问题
使用$.tasks[*].assignees[*].id只能提取到所有assignee的id数组:
[ "assignee_1", "assignee_2", "assignee_3" ]
需要得到每个assignee的id和name依次排列的一维数组:
[ "assignee_1", "assignee_1_name", "assignee_2", "assignee_2_name", "assignee_3", "assignee_3_name" ]
解决方案
使用JSONPath的多字段提取表达式,先获取每个assignee的id和name组成的子数组,再将结果扁平化:
1. JSONPath表达式
$.tasks[*].assignees[*].[id, name]
该表达式会返回嵌套数组:
[ ["assignee_1", "assignee_1_name"], ["assignee_2", "assignee_2_name"], ["assignee_3", "assignee_3_name"] ]
2. 扁平化处理
将上述嵌套数组通过语言内置的扁平化方法(比如JavaScript的Array.flat()、Python的sum(arr, [])等)处理,即可得到目标一维数组。
内容的提问来源于stack exchange,提问作者manoscorne
相关产品推荐
相关产品推荐

