解析并关联多个JSON数组字段

  • 文档创建者:Wendy123456
  • 历史版本:9
  • 最近更新:Wendy123456 于 2024-09-05
  • 注:本文方案适用于 4.1.6.2 之前版本。

    1. 概述

    1.1 应用场景

    用户的 JSON 数据中包含多个数组字段,如下图所示:

    1695111552508285.png

    希望解析数组字段,且解析后的字段一一对应。如下图所示:

    1695111694348066.png

    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 语句如下所示:

    点击展开更多
    select '{
    "header": {
    "desc": "success",
    "failures": [],
    "oprs": 1,
    "succ": 1,
    "oprtime": 0,
    "quota": 1,
    "rquota": 200000000,
    "status": 0,
    "traceid": "a9874ba8-b3a0-11ed-8323-97b36044f232"
    },
    "body": {
    "data": [
    {
    "result": {
    "total": 20,
    "pageSum": [
    [
    386,
    130,
    279,
    212,
    189,
    41.98,
    263,
    71.06,
    230,
    8.61,
    "--",
    "--"
    ],
    [],
    []
    ],
    "timeSpan": [
    "2023/03/01 - 2023/03/02"
    ],
    "sum": [
    [
    364,
    200,
    249,
    212,
    82,
    41.98,
    253,
    71.06,
    220,
    1.61,
    "--",
    "--"
    ],
    []
    ],
    "fields": [
    "aa",
    "bb",
    "cc",
    "dd",
    "ee",
    "ff",
    "hh",
    "ii",
    "er",
    "ef",
    "qw",
    "dg"
    ]
    }
    }
    ],
    "expand": {}
    }
    }'
     as json
    显示代码

    40.png

    2.2 解析数据

    拖入「JSON 解析」算子,解析 JSON 数据。

    1)选择源字段为 json,JSON 节点选择 sum、fields。

    1695173420139856.png

    此时点击数据预览效果如下图所示:

    1695112840997492.png

    解析后的数据为数组格式。我们需要修改 JSON 路径,解析数组字段,使得解析后的字段一一对应。

    2)JSON 路径修改如下图所示:

    1695112999714386.png

    JSON 表达式
    说明
    [0][*][0]:表示访问数组中的第一个元素。在 JSON 数组中,索引通常从 0 开始,所以 [0] 表示访问数组中的第一个元素

    [*]:表示通配符,用于表示匹配数组中的所有元素,即匹配当前位置处的数组的所有元素

    [0][*] 表达式的含义是:访问 JSON 数组中的第一个元素,并获取该元素的所有子元素。这通常在嵌套的 JSON 结构中使用,以获取特定元素的子元素集合

    JSON 路径更多介绍请参见:https://github.com/json-path/JsonPath

    点击数据预览,效果如下图所示:

    1695174841805164.png

    3)用户根据实际情况,继续数据进行处理或输出。




    附件列表


    主题: 数据开发-定时任务
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!