提取对象路径节点

概述
Extract Object Path 节点允许您在对象上运行 jsonpath 查询。这对于从 JSON 对象或数组中提取数据非常有用。一些使用场景包括:
- 从API返回的JSON对象中提取数据
- 从Extract JSON节点或Extract YAML节点的结果中提取属性
- 访问数组中的单个元素
- 复杂查询,例如
$.store.book[?(@.price < 10)]用于执行过滤
任何有效的jsonpath-plus查询都可以使用,但要注意复杂的查询。
Extract Object path的输入必须是一个对象,或者是任意数据类型的数组。您还可以查询非对象数据类型的属性,例如字符串,比如$.length来获取字符串的长度。
- 输入
- 输出
- 编辑器设置
输入项
| 标题 | 数据类型 | 描述 | 默认值 | 备注 |
|---|---|---|---|---|
| Object | object or any[] or string | The object to query using the path. | (required) |
输出
| 标题 | 数据类型 | 描述 | 备注 |
|---|---|---|---|
| Match | any | If the value is found in the object, the value matched. | If the value is not found, this port is not ran. |
| All Matches | any[] | When using a path that can match multiple times, such as $.someArray[*], represents all paths of the object that match. | If the value is not found, this port will run with an empty array. |
编辑器设置
| 设置 | 描述 | 默认值 | 使用输入切换 | 输入数据类型 |
|---|---|---|---|---|
| Path | The jsonpath path to use to extract properties from the input object. | $ | Yes | string |
示例1:从对象中提取属性
创建一个对象节点并将值设置为以下内容:
{
"name": "John Doe",
"age": 30
}创建一个提取对象路径节点,并将对象节点连接到该节点。将提取对象路径节点的
Path设置为:$.name运行图形。Extract Object Path 节点应输出值
John Doe。

示例2:从对象数组中提取属性
创建一个Object Node并将值设置为以下内容:
[
{
"name": "John Doe",
"age": 30
},
{
"name": "Jane Doe",
"age": 25
}
]创建一个Extract Object Path节点并将Object节点连接到它。将Extract Object Path节点的
Path设置为:$[*].name运行图形。Extract Object Path节点的
all_matches输出应包含值John Doe和Jane Doe。match输出包含第一个匹配项,即John Doe。

示例3:从对象中提取动态属性
创建一个Object Node并将值设置为以下内容:
{
"name": "John Doe",
"age": 30
}创建一个文本节点并将值设置为
age。创建另一个文本节点并将值设置为
$.{{input}}。将第一个文本节点连接到第二个文本节点。创建一个Extract Object Path节点,并为
Path设置启用输入端口。将第二个Text节点连接到Extract Object Path节点的Path输入端口。将Object节点连接到Extract Object Path节点。运行图表。请注意路径是动态构建的,并且
age是从对象中提取的。

错误处理
如果路径无效,Extract Object Path Node 将抛出错误。如果路径有效但未找到值,match 输出将不会运行,而 all_matches 输出将运行并返回一个空数组。
常见问题解答
问:Extract Object Path Node 是否仅适用于对象?
A: 不,它也可以处理数组和其他具有属性的JavaScript值,比如字符串。例如,你可以使用$.length来获取字符串的长度。
问:我可以拆分提取对象路径节点以便对对象数组执行命令吗?
A: 建议直接使用*运算符和All Matches输出,但在某些情况下拆分节点是合适的。例如,当处理一个包含数组的对象数组时,如果您想提取所有子数组,可以选择使用$[*].someArray或者在拆分后的节点上使用$.someArray。
问:我能否使用Extract Object Path Node从API返回的JSON对象中提取数据?
A: 是的,你可以使用HTTP Call Node来发起API请求,然后使用Extract Object Path Node从响应中提取数据。