最新历史版本 :JSON解析问题排查 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

本文为您介绍 JSON解析 相关问题。

解析 JSON 数据前,建议查看:解析 JSON 数据 内容。

2. 报错及解决方案编辑

包含转义字符

问题描述:

报错:JSON节点获取失败

1714983040936092.png

原因分析:

用户数据中包含转义字符\

16.png

解决方案:

使用转义字符再转义反斜杠。

JSON修改为:

{
"name": 1,
"name2": "\\"  
}

Unrecognized token 'TRUE'

问题描述:

报错:com.fr.dp.exception.FineDPException: Get json path fields error. - Not Json format! - Unrecognized token 'TRUE': was 

expecting (JSON StringNumberArrayObject or token 'null''true' or 'false') at [Source: (ByteArrayInputStream); line: 1, column: 14]

1714983382658608.png

原因分析:

用户的 JSON 数据:


select '{"name":TRUE}' as a

json 数据中,boolean 值类型应为小写的 true/false

解决方案:

select '{"name":true}' as a

Unexpected character ('"' (code 34))

问题描述:

报错:com.fr.dp.exception.FineDPException: Get json path fields error. - Not Json format! - Unexpected character ('"' (code 34)): 

was expecting comma to separate Object entries at [Source: (ByteArrayInputStream); line: 3, column: 14]

1714983559728098.png

原因分析:

用户JSON数据:

select '{
"name": 1,
"name2": "\n"  
}' as a

转义字符个数不对。

解决方案:

select '{
"name": 1,
"name2": "\\n" 
}' as a

Use bracket notion ['my prop'] if your property contains blank characters

问题描述:

json可以正常获取到节点,但是预览报错:Use bracket notion ['my prop'] if your property contains blank characters

1714983762617369.png

20.png

原因分析:

fdl 中 json 解析后的字段名称英文字母中间不允许存在空格。可使用 sparksql 将空格替换成其他字符,比如_。

简道云子表单第一行没填获取不到节点

问题描述:

简道云第一行数据,子表单内容全不填的话,json 结构不完整,会显示“[]”,导致 json 解析不出来。

注:4.1.6.2 及之后版本,可以通过粘贴JSON文本的方式修改选择节点的内容,以防止出现上游有多行 JSON 文本流进时,因为第一行的JSON属性较少,导致其他json属性无法直接选择的情况。详情请参见:JSON解析算子功能说明 2.3.2节内容。

解决方案:

方案一:手动添加 jsonpath ,获取数据。

方案二:手动将子表单为空的数据结构补全:

示例:

21.png

1)使用 spark sql 算子将子表单 info 为空的 json 数据,手动补全结构。

select if(info="[]",'[
{
"_id": "",
"name": "",
"type": "",
"product": "",
"sale": ""
}
]', info) as infotext from $[简道云输入]

最终效果:

22.png

JSON数据来源丢失

问题描述

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

原因分析

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

解决方案

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

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

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

24.png

解析包含英文括号的字段时,提示行数不匹配

问题描述:

解析包含()的字段时,会提示:Json解析结果行数不匹配

解决方案:

如果 jsonpath 包含(),可以修改下 jsonpath 的写法,改法如下:

$..累计动销件数(简道云)    ->     $..['累计动销件数(简道云)']

使用方括号和单引号将包含英文括号的部分包起来即可。