历史版本19 :JSON解析算子典型示例 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

FineDataLink 版本功能变动
3.5.1「数据转换」节点新增算子「JSON 解析」;支持将 JSON 结构的数据输出为行列格式

1.2 应用场景

通过 API 取数,或者从一些非关系型、关系型数据库里读取数据时,存在取到的数据包含 JSON 格式数据的情况。而且许多情况下,JSON 格式的数据并不标准,并不能直接映射成二维表数据使用。

「JSON 解析」算子可以解析 JSON 结构的数据,输出行列格式的数据。

1.3 功能简介

「JSON 解析」算子通过获取上游输出的 JSON 数据,将其自定义解析成需要的字段并输出给下游。

2. 示例编辑

2.1 场景模拟

图书数据是以 JSON 格式存储的,保存在接口数据中。

http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json

现在希望对 JSON 格式的数据进行拆解,解析成可以直接分析的二维表。如下图所示:

2.2 创建任务

创建一个定时任务,将一个「数据转换」节点拖到设计界面。如下图所示:

2.3 设置数据输入

点击「数据转换」节点,将「API输入」拖到数据转换的设计界面,如下图设置数据来源,取出 API 接口中所有数据。如下图所示:

接口地址:http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json

注:API 接口数据取数详情参见:API入门

2.4 设置 JSON 解析

再将「JSON解析」拖到设计界面,并使用线条跟它的上游「API 输入」相连。

点击JSON解析对它进行设置,取出需要的字段:

JSON 数据来源:选择要解析的 JSON 格式数据。

选择 JSON 节点:选择要解析的 JSON 节点,本示例选择 store

注:具体设置项介绍请参见本文第三章内容。

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

2.5 设置DB表输出

再将「DB表输出」拖到设计界面,并使用线条跟它的上游「JSON解析」相连。

点击「DB表输出」对它进行设置。如下图所示:

调整写入数据表的字段映射,如下图所示:

2.6 运行任务

1)点击右上角「保存」按钮。点击右上角保存并运行,日志有执行成功信息表示任务成功运行。如下图所示:

可以看到数据库 FRDemo 中新增了一张表 json,为解析后数据。如下图所示:

3. 功能说明编辑

「JSON 解析」算子配置界面如下图所示:

1685071694469571.png

3.1 选择 JSON

将直接获取的 JSON 格式数据或者从来源表中选择 JSON 格式数据合并到下拉框可选项中。

如果上游为API输入算子,则默认选择default,如下图所示:

32.png

若上游为DB表输入或者其他输入算子,则可以选择需要解析的JSON来源字段,如下图所示:

33.png

3.2 解析 JSON 数据

3.2.1 说明

选择 JSON 节点,即可解析:

注:json 解析的时候建议选择最开始的节点,此时为绝对路径下的解析,否则直接勾选指定字段,使用相对路径解析,数据解析结果可能会有错误。

1685071849192590.png

可手动编辑、删除字段,如下图所示:

35.png

3.2.2 JSON 数据有多层级且不同层级存在同名字段

当 JSON 数据存在多层且有同名字段时,为了避免出现错误,建议选择该同名字段的父节点。这样可以保证其他同名字段不会被误选。

1)不勾选父节点示例

不同层级存在同名字段且不勾选父节点:

1685072190525882.png

生成的 JSON 路径为 $..name ,且多读了一条数据。

30.png

2)勾选父节点示例

不同层级存在同名字段且勾选父节点:

1685072391721944.png

生成的 JSON 路径为 $..baseTemplate.name ,读取数据正确。

1685072477188249.png

4. 注意事项编辑

4.1 JSON数据来源丢失

问题描述

JSON解析配置成功后,重新再打开,发现解析配置中的「JSON数据来源」丢失,需要重新选择。

原因分析

JSON解析获取API数据源的时候,API返回数据超过默认的超时时间,所以JSON解析获取前置数据源失败。

解决方案

请求时间默认为 10秒,若用户的数据量较大,接口请求时间较长,4.0.13 以及之后的版本可以在FDL的 Header 内使用 FDLTimeout 字段设置超时时间。

该参数参数值需要写入正整数,如下图所示:

注:若数据量较大,JSON 格式数据建议取消勾选「将解析后的JSON数据展开为二维表」,否则会增加加载响应时间。