You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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'的对象)。

错误原因

  1. 筛选逻辑反向:原表达式中pmtDtls[lnAprvlStatus='D']是选中所有状态为'D'的对象,而非排除它们;
  2. 转换操作符语法错误: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:12:02