在Talend中使用tExtractJSONFields提取JSON字段遇空值求助
搞定Talend JSON解析:顶层字段为空的解决办法
嘿,我之前也碰到过一模一样的问题——能遍历数组,但顶层的codeObjetStart这些字段全是空值,其实就是组件配置时没处理好上下文路径的问题,给你一步步捋清楚怎么改:
1. 核心配置:tFileInputJSON组件要同时抓顶层字段和数组
这是关键中的关键,你得让组件既遍历数组,又能拿到根节点的顶层字段:
- 先选中
tFileInputJSON,在**「Basic settings」**标签里:- 选好你的JSON文件路径;
- **「Loop XPath query」**填
/resultatSdt/*——这个是告诉Talend要遍历resultatSdt数组里的每一个对象;
- 然后切到**「Schema」**标签,逐个添加字段:
- 先加顶层字段:
codeObjetStart(String类型)、codeRetour、libelleCodeErreur、versionObjetStart,注意这些字段的**「XPath query」要写绝对路径**:比如/codeObjetStart,不能只写字段名!因为遍历数组时,组件的上下文是数组里的每个小对象,直接写字段名会在当前对象里找,自然找不到根节点的字段; - 再加数组里的字段:
KVIOPEFL、NMLIBFRA、NMLIBANG,这些的XPath直接写字段名就行,因为上下文就在数组对象里。
- 先加顶层字段:
2. 快速验证Schema的配置
给你列个对应表,方便你核对:
| 字段名 | 类型 | XPath 路径 |
|---|---|---|
| codeObjetStart | String | /codeObjetStart |
| codeRetour | String | /codeRetour |
| libelleCodeErreur | String | /libelleCodeErreur |
| versionObjetStart | String | /versionObjetStart |
| KVIOPEFL | String | KVIOPEFL |
| NMLIBFRA | String | NMLIBFRA |
| NMLIBANG | String | NMLIBANG |
3. 连接tLogRow输出到控制台
把tFileInputJSON的主输出线拖到tLogRow组件上,然后在tLogRow的**「Mode」**里选「Table (print values in cells)」或者「Vertical」,这样运行后就能在控制台看到所有字段的内容,包括顶层字段和数组里的每一条数据。
踩过的坑提醒你
千万别偷懒省略顶层字段的/前缀!我当初就是只写了codeObjetStart,结果全是空值,后来才反应过来——遍历数组时上下文变了,必须用绝对路径才能拿到根节点的字段。
按这个配置改完,运行作业就能看到所有字段都有值啦!
内容的提问来源于stack exchange,提问作者Safus09
相关产品推荐
相关产品推荐

