如何通过Jolt规格在指定status值下清空users数组?
实现用户需求的Jolt转换规格编写
需求说明
根据JSON中status字段的取值,对users数组做如下处理:
- 若
status为"PENDING"、"INACTIVE"或"BLOCKED",将users置为空数组[] - 若
status为其他值,保留users数组原有内容
输入示例1(status为ACTIVE)
{ "status": "ACTIVE", "users": [ { "id": "1", "name": "Aaron", "accounts": [ { "id": 11, "value": "account_11" }, { "id": "12", "value": "account_12" } ] }, { "id": "2", "name": "Rodney", "accounts": [ { "id": 22, "value": "account_22" } ] }, { "id": "3", "name": "Clayton", "accounts": [ { "id": 33, "value": "account_33" } ] } ] }
预期输出:与输入完全一致,users数组保留原内容
输入示例2(status为BLOCKED)
{ "status": "BLOCKED", "users": [ { "id": "1", "name": "Aaron", "accounts": [ { "id": 11, "value": "account_11" }, { "id": "12", "value": "account_12" } ] }, { "id": "2", "name": "Rodney", "accounts": [ { "id": 22, "value": "account_22" } ] }, { "id": "3", "name": "Clayton", "accounts": [ { "id": 33, "value": "account_33" } ] } ] }
预期输出:
{ "status": "BLOCKED", "users": [] }
对应的Jolt规格
[ { "operation": "modify-overwrite-beta", "spec": { "users": "=ifElse(or(eq(@(1,status),'PENDING'),eq(@(1,status),'INACTIVE'),eq(@(1,status),'BLOCKED')), [], @(1,users))" } } ]
规格说明
- 使用
modify-overwrite-beta操作修改users字段的值 - 通过
ifElse函数实现条件判断:- 用
or和eq组合判断status是否为指定的三个值之一 - 满足条件则返回空数组
[],否则返回原users数组的内容
- 用
内容的提问来源于stack exchange,提问作者Sunnydays
相关产品推荐
相关产品推荐

