1. 概述编辑
1.1 版本
FineDataLink 版本 | 功能变动 |
---|---|
3.5.1 | 「数据转换」节点新增算子「JSON 解析」;支持将 JSON 结构的数据输出为行列格式 |
1.2 应用场景
通过 API 取数,或者从一些非关系型、关系型数据库里读取数据时,存在取到的数据包含 JSON 格式数据的情况。而且许多情况下,JSON 格式的数据并不标准,并不能直接映射成二维表数据使用。
「JSON 解析」算子可以解析 JSON 结构的数据,输出行列格式的数据。
1.3 功能简介
「JSON 解析」算子通过获取上游输出的 JSON 数据,将其自定义解析成需要的字段并输出给下游。
示例:
例如某个字段值为:
[ { "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century", "price": 8.95 }, { "category": "fiction", "author": "Evelyn Waugh", "title": "Sword of Honour", "price": 12.99 }, { "category": "fiction", "author": "Herman Melville", "title": "Moby Dick", "price": 8.99, "isbn": "0-553-21311-3" }, { "category": "fiction", "author": "J.R.R. Tolkien", "title": "The Lord of the Rings", "price": 22.99, "isbn": "0-395-19323-5" }]
「JSON 解析」算子解析后,为:
2. 功能说明编辑
「JSON 解析」算子配置界面如下图所示:
2.1 选择源字段
将直接获取的 JSON 格式数据或者从来源表中选择 JSON 格式数据合并到下拉框可选项中。
如果上游为「API 输入」算子,一般默认选择 default。如下图所示:
若上游为「DB表输入」或者其他输入算子,则可以选择需要解析的 JSON 来源字段。如下图所示:
2.2 解析 JSON 数据
2.2.1 说明
选择 JSON 节点,即可解析:
注:json 解析的时候建议选择最开始的节点,此时为绝对路径下的解析,否则直接勾选指定字段,使用相对路径解析,数据解析结果可能会有错误。
可手动编辑、删除字段。如下图所示:
2.2.2 JSON 数据有多层级且不同层级存在同名字段
当 JSON 数据存在多层且有同名字段时,为了避免出现错误,建议选择该同名字段的父节点。这样可以保证其他同名字段不会被误选。
1)不勾选父节点示例
不同层级存在同名字段且不勾选父节点:
生成的 JSON 路径为 $..name ,且多读了一条数据。
2)勾选父节点示例
不同层级存在同名字段且勾选父节点:
生成的 JSON 路径为 $..baseTemplate.name ,读取数据正确。
2.2.3 多个 JSON 解析算子解析不同字段但解析后的字段同名
示例:
使用两个「JSON解析」算子,分别解析两个不同字段。但「选择JSON节点」时,两个「JSON解析」算子选择的字段名相同,都为 name 。如下图所示:
此场景下,若有多个「JSON解析」算子,解析后字段名称不能相同,需要修改解析后字段名称。否则,后面的同名字段会覆盖前面的同名字段。如下图所示: