1. 概述
1.1 版本
FineDataLink 版本 | 功能变动 |
---|---|
4.0.19 | - |
4.1.7.2 | 界面优化 |
4.1.14.1 | 支持设置分组字段,可按照分组字段合并JSON字段 |
4.2.5.2 |
|
1.2 应用场景
当用户需要使用 API 输出实现将 API 数据写入指定接口时,可能需要将数据库或者其他形式的数据生成为 JSON 格式,以便进行数据交互。
1.3 功能说明
FineDataLink 支持使用 JSON 生成算子,生成 JSON 格式数据。
2. 功能说明
2.1 JSON 字段
字段名称:从上游输出中选择字段进行组装生成 JSON 对象,默认字段名称为「JSON_DATA」,用户可自行修改名称。
按分组字段合并 JSON 字段:将生成的 JSON 字段按照指定的字段进行分组输出。
分组字段介绍:
注:分组字段功能可解决简道云子表单增删改同步问题,详情请参见多个简道云子表单增删改输出
2.2 JSON 设置
2.2.1 设置格式
默认为用户创建一个对象,允许用户新增、删除对象的键-值,值支持设置为子对象和子数组进行嵌套(值为子对象或子数组代表一层嵌套),且根据用户的配置支持生成多个 JSON 对象。
配置提供四个选项设置,键、值类型、值、值格式。
键:用户自定义选择键名
值类型&值:值类型提供 字段、子对象、子数组 三个选项。
4.2.5.2 及之后的版本支持自定义固定值,如下图所示:
值格式:提供 字符串、数值、布尔型 三种选项,默认使用前面选择的值字段的类型进行填充,如果字段值为数值、则生成的值为数值(不带双引号),如果字段值为 true/flase、则生成的值为逻辑值 true/flase(不带双引号),否则为字符串;当用户选择「字符串」时,一律将值设定为字符串(带双引号);在运行时,需要将实际的数据流字段的类型,按照用户设定的类型进行强制转换,转换失败则报错;对于子数组,只允许在前端添加一行值,且值的类型只允许为字段或子对象。
2.2.2 快捷生成和清空
提供「快捷生成」和「清空」设置:
「按字段自动生成」:将流入算子的数据流字段自动生成一个对象,在对象内为每个字段创建为一个键-值,键为字段名、值为字段值、不包括嵌套。
「按JSON模版生成」:按照粘贴的 JSON 格式进行 JSON 设置,如下图所示:
清空:允许用户通过清空配置选项,实现一键清空配置表。
2.2.3 整体生成数组
勾选「整体生成数组」后,会将设置的 JSON 整体变为[]数组,如下图所示:
3. 约束限制
JSON 配置表内,嵌套不能超过三层。注:4.2.5.2 及之后的版本已经支持。
JSON 配置表内,同一嵌套层级的子数组只能添加一个。
单个字段只允许在JSON生成算子内被选择一次,已被选过的字段置灰提示。注:4.2.5.2 及之后的版本已经支持。
如果字段值为数值、则生成的值为数值(不带双引号),如果字段值为 true/false、则生成的值为逻辑值 true/false(不带双引号),否则为字符串;
当用户选择“字符串”时,一律将值设定为字符串(带双引号);
对于子数组,只允许在前端添加一行值,且值的类型只允许为字段或子对象;
同一层级内键名不允许重名,跨层级允许键名重名。
4. 操作步骤
示例数据:dw_comment.xls
API输出 中需要将数据表中的用户数据生成 JSON 格式后,通过 API 输出对接业务系统,将数据推送写入业务系统接口中,触发业务系统流转任务,实现数据交互。
本文以 API输出 中的 JSON 生成示例详细说明用法。
4.1 取出数据
用「数据转换」节点,进入编辑界面后,拖入「DB表输入」算子,SQL 语句取出需要进行 API 输出的数据,如下图所示:
点击预览数据,如下图所示:
4.2 JSON设置
由于需要API写入的接口数据需要 JSON 格式,所以需要将原先的数据库表形式数据转换成 JSON 格式。
JSON 样式如下:
{
"fields": {
"summary": "文档很赞",
"components": {
"name": [
"FR10"
]
},
"customfield_14904": "https://help.fanruan.com/finereport10.0/doc-view-2463.html",
"description": "根据参数动态显示地图区域"
}
}
新增 JSON 生成算子,设置输出 JSON 字段名,并进行 JSON 配置。
点击 JSON 设置中的添加,开始 JSON 设置,如下图所示:
输入第一个键 fields,然后设置子对象,如下图所示:
在嵌套的子对象中,输入键并选择对应的字段「comment」作为值,如下图所示:
同时支持调整值类型,类型支持「字符串」、「数值」和「布尔型」,如下图所示:
若选择自动生成 JSON ,则效果如下:
将流入JSON生成算子的数据流字段自动生成一个对象,在对象内为每个字段创建为一个键-值,键为字段名、值为字段值、不包括嵌套。
按照上文的 JSON格式进行设置,最终生成的 JSON 如下图所示:
4.3 数据预览
配置好后,选择「数据预览」,可以看到生成的 JSON 。
然后点击指定的 JSON ,可以在右侧看到详细的 JSON 内容,并且可以复制内容,如下图所示:
后续操作可以参考:API输出
5. 运行日志说明
日志分类 | 场景 | 报错内容(不包含时间部分) |
---|---|---|
预览&选择节点时报错 | 源字段为空 | com.fr.dp.exception.FineDPException: JSON生成失败 - JSON源字段不能为空 (后端报错信息及堆栈) |
未接入前置节点 | com.fr.dp.exception.FineDPException: 未接入前置节点 - previous node of [JSON生成] is absent | |
JSON生成失败-值格式错误 | com.fr.dp.exception.FineDPException: JSON生成失败 - 值格式错误(后端报错信息及堆栈) | |
JSON生成失败(其他场景失败场景) | com.fr.dp.exception.FineDPException: JSON生成失败 - 后端报错信息及堆栈 | |
构建时报错 | 源字段为空/输出字段为空 | 任务构建失败 异常节点:【数据转换】 [JSON生成]: 源字段为空 输出字段为空 |
未接入前置节点 | 任务构建失败 异常节点:【数据转换】 [JSON生成]:未接入前置节点 | |
运行时报错 | JSON生成失败-值格式错误 | [数据转换] - 执行失败 [JSON生成]:JSON生成失败 - 值格式错误(后端报错信息) |
JSON生成失败(其他场景失败场景) | [数据转换] - 执行失败 [JSON生成]:JSON生成失败 - (后端报错信息) |