在Talend中从JSON文件中提取值

问题描述 投票:2回答:1

我有这样的json文件。

{"2020-04-28":{"37,N7L2H4,Carry,CHOPA,PLX": {"inter_results": {"inter_mark": "GITA","down": null,"up": null,"wiki": {"included": "false", "options": ["RRR", "SSS","HHH"]}},"38, N5L2J4, HURT, SERRA, PZT": {"inter_results": {"inter_mark": "MARI","down": "250","up": "1250","wiki": {"included": "true", "options": ["XXX", "YYY"]}},"39, N4L2H4, HIBA, FILA, PFG": {"inter_results": {"inter_mark": "HILO","down": "100","up": "250","wiki": {"included": "true", "options": ["RTG", "VTH","HJI","JKL"]}}}}

我想提取价值 N7L2H4,N5L2J4,N4L2H4 从这个json文件中使用 tFileInputJsonjsonPath.

talend
1个回答
0
投票

使用Talend的原生组件,这很难实现。你可以用一些java代码来实现,但这并不优雅。这里有一个使用Talend Exchange的json组件套件的解决方案,你可以从这里下载 此处enter image description here

该组件 tJSONDocTraverseFields 允许你列出你的json的所有字段、路径和值,它给出了这样的输出。

$.2020-04-28.37,N7L2H4,Carry,CHOPA,PLX.inter_results.inter_mark|4|inter_mark|"GITA"|false|21
$.2020-04-28.37,N7L2H4,Carry,CHOPA,PLX.inter_results.down|4|down|null|false|21
$.2020-04-28.37,N7L2H4,Carry,CHOPA,PLX.inter_results.up|4|up|null|false|21
$.2020-04-28.37,N7L2H4,Carry,CHOPA,PLX.inter_results.wiki.included|5|included|"false"|false|21
$.2020-04-28.37,N7L2H4,Carry,CHOPA,PLX.inter_results.wiki.options[0]|6|options|"RRR"|true|21
$.2020-04-28.37,N7L2H4,Carry,CHOPA,PLX.inter_results.wiki.options[1]|6|options|"SSS"|true|21
$.2020-04-28.37,N7L2H4,Carry,CHOPA,PLX.inter_results.wiki.options[2]|6|options|"HHH"|true|21
$.2020-04-28.38, N5L2J4, HURT, SERRA, PZT.inter_results.inter_mark|4|inter_mark|"MARI"|false|21
$.2020-04-28.38, N5L2J4, HURT, SERRA, PZT.inter_results.down|4|down|"250"|false|21
$.2020-04-28.38, N5L2J4, HURT, SERRA, PZT.inter_results.up|4|up|"1250"|false|21

你可以通过解析json路径来得到你想要的值: enter image description here

我把路径用"... "分割,得到 "37,N7L2H4,Carry,CHOPA,PLX "这个字段,然后再用", "分割,得到第一个值。tJSONDocOpen 允许你初始化你的json文件,它作为一个连接。然后你选择它在 tJSONDocTraverseFields.

© www.soinside.com 2019 - 2024. All rights reserved.