使用JMESPath查询JSON#
JMESPath 是一种用于JSON的查询语言,您可以使用它从JSON文档中提取和转换元素。有关如何使用JMESPath的完整详情,请参阅JMESPath文档。
jmespath() 方法#
n8n提供了一个自定义方法jmespath()。使用此方法可以通过JMESPath查询语言对JSON对象执行搜索。
基本语法是:
1 | |
1 | |
为了帮助理解该方法的作用,以下是等效的较长JavaScript代码:
1 2 | |
表达式必须为单行
较长的代码示例在表达式中不起作用,因为它们必须是单行的。
object 是一个JSON对象,例如前一个节点的输出。searchString 是用JMESPath查询语言编写的表达式。JMESPath规范提供了支持的表达式列表,而它们的教程和示例提供了交互式示例。
搜索参数顺序
JMESPath 规范中的示例遵循search(searchString, object)模式。而n8n使用的JMESPath JavaScript库则支持search(object, searchString)。这意味着当使用JMESPath文档中的示例时,您可能需要调整搜索函数参数的顺序。
常见任务#
本节提供了一些常见操作的示例。更多示例及详细指南,请参阅JMESPath官方文档。
在尝试这些示例时,您需要将代码节点的模式设置为每个项目运行一次。
对元素集合应用JMESPath表达式进行投影#
来自 JMESPath 投影文档:
投影是JMESPath的关键特性之一。它用于对元素集合应用表达式。JMESPath支持五种类型的投影:
- 列出项目预测
- 切片投影
- 对象投影
- 扁平化投影
- 筛选投影
以下示例展示了列表、切片和对象投影的基本用法。有关每种投影类型的详细解释及更多示例,请参阅JMESPath投影文档。
给定来自webhook节点的这个JSON:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | |
获取所有人的列表中的名字:
1 2 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
获取名字的切片:
1 2 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
使用对象投影获取狗的年龄列表:
1 2 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
选择多个元素并创建新的列表或对象#
使用Multiselect从JSON对象中选择元素并将它们组合成一个新的列表或对象。
给定来自webhook节点的这个JSON:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | |
使用多选列表获取名字和姓氏,并创建包含这两个名称的新列表:
1 2 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
表达式中的箭头函数替代方案#
例如,通过从代码节点返回以下代码来生成一些输入数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |
你可以进行类似“查找名称为Lenovo的商品并告诉我它们的类别ID”这样的搜索。
1 | |