注:本文方案适用于 4.1.6.2 之前版本。
1. 概述
1.1 应用场景
用户的 JSON 数据中包含多个数组字段,如下图所示:
希望解析数组字段,且解析后的字段一一对应。如下图所示:
1.2 实现思路
「JSON 解析」算子中,选择要解析的 JSON 字段后,修改 JSON 路径。
1.3 任务展示
FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「解析并关联多个JSON数组字段」。
2. 示例
2.1 获取 JSON 数据
用户实际环境中 JSON 数据的来源多样,本示例直接创建一个包含数组的 JSON 数据。
1)新建定时任务,拖入「数据转换」节点,进入「数据转换」节点。
2)拖入「Spark SQL」算子,模拟用户场景,创建包含数组的 JSON 数据。如下图所示:
SQL 语句如下所示:
点击展开更多 |
|
2.2 解析数据
拖入「JSON 解析」算子,解析 JSON 数据。
1)选择源字段为 json,JSON 节点选择 sum、fields。
此时点击「数据预览」效果如下图所示:
解析后的数据为数组格式。我们需要修改 JSON 路径,解析数组字段,使得解析后的字段一一对应。
2)JSON 路径修改如下图所示:
JSON 表达式 | 说明 |
---|---|
[0][*] | [0]:表示访问数组中的第一个元素。在 JSON 数组中,索引通常从 0 开始,所以 [0] 表示访问数组中的第一个元素 [*]:表示通配符,用于表示匹配数组中的所有元素,即匹配当前位置处的数组的所有元素 [0][*] 表达式的含义是:访问 JSON 数组中的第一个元素,并获取该元素的所有子元素。这通常在嵌套的 JSON 结构中使用,以获取特定元素的子元素集合 |
JSON 路径更多介绍请参见:https://github.com/json-path/JsonPath
点击「数据预览」,效果如下图所示:
3)用户根据实际情况,继续数据进行处理或输出。