如何在Talend中解析NDJSON格式数据?
Talend解析NDJSON数据的解决方案
NDJSON的核心特点是每行一个独立的JSON对象,而非标准JSON的数组结构,这也是你用tFileInputJSON设置$[*]循环节点却无法解析数据的原因——$[*]是针对JSON数组的循环路径,而NDJSON里没有外层数组。
以下是两种可行的解决方法:
方法一:用tFileInputRaw + tExtractJSONFields组合解析(推荐)
这种方法无需修改源文件,直接处理每行JSON:
- 拖入
tFileInputRaw组件,配置目标NDJSON文件路径、对应编码,保持默认的换行符作为行分隔符,确保每行读取一个完整的JSON对象。 - 将
tFileInputRaw的输出连接到tExtractJSONFields组件(主行连接)。 - 在
tExtractJSONFields配置界面:- 选择输入列(默认是
row1.line,即tFileInputRaw读取的整行内容)作为JSON数据源。 - 添加字段配置:字段名设为
text,类型选String,JSON路径填写$.text。
- 选择输入列(默认是
- 后续可连接
tFileOutputDelimited等组件,将解析后的数据转换为目标格式。
方法二:将NDJSON转换为标准JSON数组(适合允许修改源文件的场景)
如果可以修改源文件格式,把NDJSON包装成标准JSON数组:
- 在文件开头添加
[,结尾添加]。 - 给除最后一行外的每行末尾添加逗号。
修改后的内容示例:
[ {"text":"some test that should be parsed in operation down the line"}, {"text":"some other test that should be parsed in operation down the line"} ]
之后使用tFileInputJSON组件,循环节点设为$[*],text字段的路径设为$.text,即可正常解析数据。
内容的提问来源于stack exchange,提问作者Chairos
相关产品推荐
相关产品推荐

