能否通过JOLT实现JSON对象转数组(数组则保留原格式)
可以用JOLT实现该需求吗?
完全可以。通过结合JOLT的modify-overwrite-beta和shift操作,就能实现将单个JSON对象包装为数组,同时保留已有数组不变的需求。
JOLT变换规格
[ { "operation": "modify-overwrite-beta", "spec": { "isArray": "=isArray(@)" } }, { "operation": "shift", "spec": { "isArray": { "true": { "@(2)": "" }, "false": { "@(2)": "[]" } } } } ]
工作原理
第一步:判断输入类型
modify-overwrite-beta操作会添加一个临时字段isArray,其值为布尔型,标识输入是否为数组。第二步:根据类型处理输出
shift操作通过isArray的值执行分支逻辑:- 若输入是数组(
isArray: true),直接将原始输入(通过@(2)向上遍历两层获取根节点)复制到输出。 - 若输入是单个对象(
isArray: false),将原始输入赋值给[],从而包装为数组。
- 若输入是数组(
场景示例
场景1:输入为单个JSON对象
输入:
{"id": 1, "name": "Sample"}
输出:
[{"id": 1, "name": "Sample"}]
场景2:输入为JSON数组
输入:
[{"id":1, "name":"Item1"}, {"id":2, "name":"Item2"}]
输出:
[{"id":1, "name":"Item1"}, {"id":2, "name":"Item2"}]
内容的提问来源于stack exchange,提问作者MHegde
相关产品推荐
相关产品推荐

