EvaluateJsonPath
描述:
根据一个或多个JsonPath表达式解析数据流的内容,解析出的内容结果根据组件的配置写入到数据流的属性,或者数据流的内容本身。JsonPaths通过添加用户自定义属性的方式添加,该自定义属性的名称为解析出的内容结果被放置到数据流时对应的属性名称(如果《目标输出》设置为"数据流属性",否则属性名称会被忽略);然后自定义属性的值必须是一个有效的JsonPath表达式。当返回类型为"自动选择"的时,组件会根据配置参数《目标输出》进行自动判断。若《目标输出》设置为"数据流属性",则返回类型为'scalar(标准变量)';若《目标输出》设置为"数据流内容",则返回类型为"JSON"。如果JsonPath解析的结果为JSON数组或JSON对象,但返回类型设置为'scalar',则不会修改数据流,并将该数据流路由到'failure'连线。如果JsonPath的解析结果为某个特定的值,那么即使返回类型为JSON也是可以返回标准变量值,然后被路由到'match'连线。如果《目标输出》设置为“数据流内容”,但JsonPath无法解析出指定的路径,则数据流同样不会被修改且路由到'unmatched'连线。如果《目标输出》设置为“数据流属性”,但表达式没有解析出匹配的内容,那么该属性仍然会被创建,但是对应的属性值为空字符串,然后路由该数据流到'matched'连线。
标签:
JSON, evaluate, JsonPath, 抽取, 解析, 计算
参数:
如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置.
名字 | 默认值 | 允许值列表 | 描述 |
---|---|---|---|
目标输出 | 数据流内容 | - 数据流内容 - 数据流属性 | 指定根据JsonPath解析出的结果是写入数据流的内容还是属性中。如果使用属性,则必须指定属性名称属性。如果设置为数据流内容,那么属性名称会被忽略。 |
返回类型 | 自动选择 | - 自动选择 - json - scalar | 指定JSON路径表达式期望的返回类型。选择"自动选择"选项时,如果《目标输出》为"数据流内容"则返回类型为"json";如果《目标输出》为"数据流属性"则返回类型为"scalar"。 |
未匹配的行为 | 忽略 | - 警告日志记录 - 忽略 | 指定如何处理当《目标输出》设置为"数据流属性"时,无法解析JSON路径表达式的情况。当无法解析JSON路径表达式时,选择警告则在不匹配时将生成一个警告日志。 |
空值表示 | 空字符串 | - 空字符串 - ‘null’字符串 | 指定当JSON路径表达式解析出空值时,空值的表示形式。 |
动态参数:
名字 | 值 | 描述 |
---|---|---|
A FlowFile attribute(if <Destination> is set to 'flowfile-attribute') | A JsonPath expression | If <Destination> ='flowfile-attribute' then that FlowFile attribute will be set to any JSON objects that match the JsonPath. If <Destination> ='flowfile-content' then the FlowFile content will be updated to any JSON objects that match the JsonPath.不支持表达式语言 |
连线:
名字 | 描述 |
---|---|
failure | 当通过JsonPath无法解析出数据流的内容时(比如数据流不是一个有效的JSON),则通过该失败数据流输出。 |
unmatched | 仅当《目标输出》选择“数据流内容”,且没有相应的数据流的内容与JsonPath匹配时,才会路由到此连线。如果选择“数据流属性”输出,则忽略此连线,也就是即便没有任何JsonPath匹配,也不会输出到此连线。 |
matched | 当通过JsonPath成功解析出内容时,输出结果到此连线。当《目标输出》选择“数据流属性”时,即便没有任何匹配也会输出到此连线,且相应的属性值为空。 |
读取属性:
未提供。
写入属性:
未提供。
状态管理:
该组件不保存状态。
限制:
该组件没有限制
输入流要求:
组件必须提供输入流。
系统资源考量:
未提供。