Jolt转换需求:将对象数组属性展平为扁平结构
Jolt数组属性展平解决方案
以下是实现你需求的Jolt转换规范:
[ { "operation": "shift", "spec": { "citycode": "citycode", "branch": "branch", "Marks": "Marks", "designations": { "*": { "designation": "Occupation", "Language": "LANGUAGE-ID" } } } }, { "operation": "modify-overwrite-beta", "spec": { "Occupation": "=split('', @(1))", "LANGUAGE-ID": "=split('', @(1))" } }, { "operation": "shift", "spec": { "citycode": "citycode", "branch": "branch", "Marks": "Marks", "Occupation": { "*": "Occupation" }, "LANGUAGE-ID": { "*": "LANGUAGE-ID" } } } ]
转换逻辑说明:
- 第一步Shift操作:提取顶层需要保留的字段,同时将
designations数组中的每个元素的designation和Language分别映射到Occupation和LANGUAGE-ID,此时这两个字段会是数组形式(和你当前的输出一致)。 - 第二步Modify操作:通过
split('', @(1))将数组拆分成单个元素的独立项,为后续展开做准备。 - 第三步Shift操作:遍历
Occupation和LANGUAGE-ID的拆分结果,将每个元素直接映射为同名顶级字段,生成期望的平级重复键值对。
验证结果:
输入JSON:
{"citycode": "34343","branch": "cityname","changeDatetime": 1677063272522,"Marks": "L","designations": [{"designation": "security ","Language": "de"},{"designation": "officer","Language": "fr"},{"designation": "superior","Language": "en"}]}
输出JSON:
{"citycode":"34343","branch":"cityname","Marks":"L","Occupation":"security ","LANGUAGE-ID":"de","Occupation":"officer","LANGUAGE-ID":"fr","Occupation":"superior","LANGUAGE-ID":"en"}
注意:JSON语法规范中不允许对象存在重复键,部分解析器可能会忽略后续的重复键,但Jolt支持生成这种结构以满足特定场景需求。
内容的提问来源于stack exchange,提问作者SATHK
相关产品推荐
相关产品推荐

