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

如何在JSONata中过滤discount rateplancharge并维持完整数据结构

解决方案:保留层级结构移除指定RatePlanCharge

1. JavaScript/TypeScript 实现

如果是前端或Node.js环境,通过深拷贝原结构后遍历过滤,完整保留层级:

// 假设原始订单数据存储在order变量中
const updatedOrder = JSON.parse(JSON.stringify(order)); // 深拷贝避免修改原数据

updatedOrder.Subscription.rateplans.forEach(rateplan => {
  // 过滤掉Id为"def"的discount rateplancharge
  rateplan.rateplancharges = rateplan.rateplancharges.filter(charge => charge.Id !== "def");
});

// updatedOrder即为保留完整结构的目标结果

2. jq命令行工具实现(后端/运维场景)

用jq处理JSON文件时,通过递归修改指定层级的数组,保留整体结构:

jq '.Subscription.rateplans[] |= (.rateplancharges |= map(select(.Id != "def")))' original-order.json > updated-order.json

该命令会遍历所有rateplans节点,在每个节点下过滤掉目标charge,同时完整保留Order、Subscription、rateplan的所有其他字段与层级。

3. 通用思路:完整结构上修改而非提取目标

核心逻辑是不要直接提取目标charge,而是基于完整的订单结构,定位到rateplancharges数组后执行过滤操作:

  • 先获取完整的Order对象
  • 定位到Subscription.rateplans下的所有rateplancharges数组
  • 对每个数组过滤掉Id为"def"的元素

这种方式既能精准移除目标discount charge,又能完整保留下游流程需要的所有层级结构。

内容的提问来源于stack exchange,提问作者Alan Home

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:22:06