在我的Nifi教程中,我尝试使用JOLT处理器过滤和转换JSON,所以我对这方面非常陌生。
我的输入JSON是
[
{
"id": "1cca9371-b0f2-4c4d-9028-cd534edfecc9",
"code": "X00615",
"url": "https://acme.com.az/043f00e8-7db8-4cab-bc1d-5a39b0a89882"
},
{
"id": "4dcacd3d-dbc8-424d-8f13-46706322a4d3",
"code": "X01337"
},
{
"id": "d5d86231-3180-4436-867b-6889ae7bd80a",
"code": "X02732",
"url": "https://acme.com.az/32853ca4-309c-462b-afc4-b56fd4788e8d"
}
]
我的预期输出JSON是
[
{
"id": "1cca9371-b0f2-4c4d-9028-cd534edfecc9",
"code": "X00615",
"url": "https://acme.com.az/043f00e8-7db8-4cab-bc1d-5a39b0a89882"
},
{
"id": "d5d86231-3180-4436-867b-6889ae7bd80a",
"code": "X02732",
"url": "https://acme.com.az/32853ca4-309c-462b-afc4-b56fd4788e8d"
}
]
因此,我想删除缺少url
条目的元素,或者换句话说,只保留以http
开头的url
值的元素。
我可以得到数组中的url
元素,使用
[
{
"operation": "shift",
"spec": {
"*": {
// "id": "[&1].id", // array grows
// "code": "[&1].code", // array grows
"url": {
"htt*": {
"$": "[].&2"
}
}
}
}
}
]
但是当我尝试包含其他属性/值时,数组变成了4个元素而不是2个。
3条答案
按热度按时间pkmbmrz71#
可以将对象的键作为url属性的值
这样,没有url属性的对象自然消失。
网站http://jolt-demo.appspot.com/上的***演示***是:
c9x0cxw02#
以下规范将过滤包含键url的对象,该键的值以http开头
aiazj4mn3#
我也想出了一个解决方案后,刚刚张贴,是不同的提供的答案。因此,提供它以供评论/讨论,因为它只使用一个
shift
操作。