使用JSONATA移除指定属性值的数组对象失败求助
解决JSONATA无法移除数组中指定属性值对象的问题
问题场景
输入数据:
{ "compCode": "0002", "pmtDtls": [ { "partnerType": "V", "partnerId": "0001", "partnerName": "Partner 1", "payAmt": 1000, "lnAprvlStatus": "A", "payDesc": "nkjfkjfk nknfknk jkjkj" }, { "partnerType": "V", "partnerId": "0005", "partnerName": "Partner 2", "payAmt": 2000, "lnAprvlStatus": "D", "payDesc": "fkjfk jfkfjkf jfkfjf" } ] }
尝试用以下JSONATA表达式移除pmtDtls数组中lnAprvlStatus='D'的对象:
$ ~> |{}| {}, pmtDtls[lnAprvlStatus='D'] |
但实际返回结果与输入完全一致,未达到预期输出(仅保留lnAprvlStatus='A'的对象)。
错误原因
- 筛选逻辑反向:原表达式中
pmtDtls[lnAprvlStatus='D']是选中所有状态为'D'的对象,而非排除它们; - 转换操作符语法错误:JSONATA的转换操作符
~>需要明确为目标属性赋值,原表达式未正确将过滤后的数组赋值给pmtDtls,因此未修改原对象。
正确表达式
使用转换操作符重新赋值pmtDtls,筛选出lnAprvlStatus不等于'D'的对象:
$ ~> |{}| { "pmtDtls": pmtDtls[lnAprvlStatus != 'D'] } |
或使用not()函数实现相同逻辑:
$ ~> |{}| { "pmtDtls": pmtDtls[not(lnAprvlStatus='D')] } |
验证结果
执行正确表达式后,输出符合预期:
{ "compCode": "0002", "pmtDtls": [ { "partnerType": "V", "partnerId": "0001", "partnerName": "Partner 1", "payAmt": 1000, "lnAprvlStatus": "A", "payDesc": "nkjfkjfk nknfknk jkjkj" } ] }
内容的提问来源于stack exchange,提问作者ashok jha
相关产品推荐
相关产品推荐

