Jolt转换:将动态键值对象转为指定格式字符串数组
动态键值对象转拼接字符串数组方案
编辑说明: 键名称是动态且未知的。
需求:将一个Object转换为字符串数组,数组每个元素是键(去除下划线)与对应值(数组元素用空格连接)拼接后的结果。目前已实现下划线去除,但无法完成后续拼接。
输入:
{ "object": { "key_1": [ "A", "B" ], "key_2": [ "C" ], "key_3": [ "D", "E", "F" ] } }
期望输出:
{ "results": [ "key 1: A B", "key 2: C", "key 3: D E F" ] }
当前使用的Spec:
[ { "operation": "shift", "spec": { "object": { "*_*": "results.&(0,1) &(0,2)", "*": "results.&" } } } ]
当前输出结果:
{ "results": { "key 1": [ "A", "B" ], "key 2": [ "C" ], "key 3": [ "D", "E", "F" ] } }
修正后的Spec:
[ { "operation": "shift", "spec": { "object": { "*_*": { "$": "results[#2].key", "@": "results[#2].values" }, "*": { "$": "results[#1].key", "@": "results[#1].values" } } } }, { "operation": "modify-beta", "spec": { "results": { "*": "=concat([.key, ': ', join(' ', .values)])" } } }, { "operation": "shift", "spec": { "results": { "*": "results[]" } } } ]
步骤说明:
- Shift阶段:把每个键值对拆解为包含处理后键名(
key)和原数组值(values)的对象,存入results数组,同时完成下划线替换为空格的操作。 - Modify-beta阶段:遍历
results数组中的每个对象,将键名、:和空格连接的数组值拼接成完整字符串。 - 最终Shift阶段:将拼接好的字符串提取为
results数组的直接元素,得到目标格式。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

