You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Talend中提取特殊结构JSON并转换为标准结构化数据?

Talend 特殊结构JSON转换实现方案

方案1:纯组件组合实现(无需编码)

  • 第一步:解析源JSON
    用tFileInputJSON组件解析原始JSON,分别提取两个核心数组:
    • 提取results[0].series[0].columns数组,输出为单列列表,暂存到tHashSet组件
    • 提取results[0].series[0].values二维数组,输出为每一行对应一个子数组的单列列表
  • 第二步:生成动态列名全局变量
    读取tHashSet中存储的列名列表,用tConvertType将数组转为逗号分隔的字符串,赋值给全局变量globalColumnList
  • 第三步:字段与值匹配映射
    用tSplit将每行value数组按逗号拆分,拆分后的列索引与globalColumnList的列名索引一一对应,传入tMap完成字段重命名,即可得到结构化的标准表结构数据
  • 第四步:结果输出
    直接连接tFileOutputDelimited输出CSV,或连接tFileOutputJSON输出键值对格式的标准JSON即可

方案2:tJavaRow代码实现(适配动态列数场景)

如果列数不固定,用代码实现更高效,操作步骤如下:

  1. 先用tFileInputJSON提取出columns数组和values数组,作为两个入参字段传入tJavaRow
  2. 在tJavaRow中写入以下逻辑:
import java.util.*;

// 读取列名数组
String[] columns = (String[])input_row.columns.toArray(new String[0]);
// 遍历所有行值
for (Object valueItem : input_row.values) {
    String[] values = (String[])((List)valueItem).toArray(new String[0]);
    Map<String, String> outputMap = new HashMap<>();
    // 按索引匹配列名和值
    for (int i = 0; i < columns.length; i++) {
        outputMap.put(columns[i], values[i]);
    }
    // 输出映射后的行数据到下游组件
    output_row.structData = outputMap;
}
  1. 下游组件直接读取structData字段中的键值对,按需输出为表格、CSV或标准JSON即可

若JSON中results节点包含多个series,可先加一层tLoop遍历每个series节点,再执行上述映射逻辑即可

内容的提问来源于stack exchange,提问作者wmbff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:57:03