有人可以帮我解决下一个问题吗: 我需要根据下一个条件从有效负载中删除对象:如果某个特定键为空,我需要删除整个对象,其中包含有效负载中的该键和值。 示例:
{
"issues":[
{
"key":"13996",
"fields":{
"customfield_13100":null,
"customfield_15400":null,
"customfield_13102":null,
"customfield_13104":null,
"customfield_12809":"",
"lastViewed":null,
"customfield_12000":[
"870CA25F"
]
}
},
{
"key":"13996",
"fields":{
"customfield_13100":null,
"customfield_15400":null,
"customfield_13102":null,
"customfield_13104":null,
"customfield_12809":"",
"lastViewed":null,
"customfield_12000":null
}
},
{
"key":"13996",
"fields":{
"customfield_13100":null,
"customfield_15400":null,
"customfield_13102":null,
"customfield_13104":null,
"customfield_12809":"",
"lastViewed":null,
"customfield_12000":[
"870CA25F"
]
}
}
]
}
我尝试了各种变体的filterObject,但没有成功
假设条件是:如果“customfield_12000”== null,则必须删除整个对象。 预期输出示例: `
{
"issues":[
{
"key":"13996",
"fields":{
"customfield_13100":null,
"customfield_15400":null,
"customfield_13102":null,
"customfield_13104":null,
"customfield_12809":"",
"lastViewed":null,
"customfield_12000":[
"870CA25F"
]
}
},
{
"key":"13996",
"fields":{
"customfield_13100":null,
"customfield_15400":null,
"customfield_13102":null,
"customfield_13104":null,
"customfield_12809":"",
"lastViewed":null,
"customfield_12000":[
"870CA25F"
]
}
}
]
}
如果我理解正确的话,如果一个特定键为空,您想从
issues
列表中删除该项目。由于在示例中提供的密钥位于 fields
对象中,我假设条件都相似。
filterObject() 不合适,因为您正在过滤数组中的项目,而不是对象内的键值。 filter() 是过滤数组中项目的正确函数。
我使用了
update
运算符并创建了一个函数来封装 filter() 调用。动态选择器让我们可以对所使用的键进行参数化:
%dw 2.0
output application/json
fun removeIfNullField(a, fieldname, keyname)=
a filter ((item) -> !(item[fieldname][keyname] is Null ))
---
payload update {
case issues at .issues -> removeIfNullField(issues, "fields","customfield_12000")
}