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

  • Last update: September 20, 2023
  • 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
    Expand

    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)用户根据实际情况,继续数据进行处理或输出。


    附件列表


    主题: 数据开发
    • Helpful
    • Not helpful
    • Only read

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    9s后關閉

    Get
    Help
    Online Support
    Professional technical support is provided to quickly help you solve problems.
    Online support is available from 9:00-12:00 and 13:30-17:30 on weekdays.
    Page Feedback
    You can provide suggestions and feedback for the current web page.
    Pre-Sales Consultation
    Business Consultation
    Business: international@fanruan.com
    Support: support@fanruan.com
    Page Feedback
    *Problem Type
    Cannot be empty
    Problem Description
    0/1000
    Cannot be empty

    Submitted successfully

    Network busy