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

如何用JMESPath过滤JSON属性并提取嵌套键与关联价格?

提取排除指定属性的嵌套键及关联值查询方案

原始JSON数据

{
  "checkout_data": {
    "flavors_sku": {
      "Rich Milk Chocolate": { "1": ["530"], "6": ["296"] },
      "prices": {
        "530": "5.6",
        "296": "33.59",
        "529": "5.6",
        "297": "33.59",
        "531": "5.6",
        "299": "33.59",
        "532": "5.6",
        "301": "33.59"
      },
      "Classic French Vanilla": { "1": ["529"], "6": ["297"] },
      "Strawberry Sensation": { "1": ["531"], "6": ["299"] },
      "Variety Pack": { "10": ["532"], "60": ["301"] }
    }
  }
}

一、提取排除prices的嵌套属性键(结果一)

通过过滤flavors_sku下的prices属性,再提取剩余每个对象的键即可得到目标结果:

const data = /* 上述原始JSON数据 */;

const result1 = Object.entries(data.checkout_data.flavors_sku)
  .filter(([key]) => key !== 'prices') // 排除prices属性
  .map(([_, flavorObj]) => Object.keys(flavorObj)); // 提取每个口味对象的键

console.log(result1);

输出结果:

[
  ["1", "6"],
  ["1", "6"],
  ["1", "6"],
  ["10", "60"]
]

二、关联查询对应价格(结果二)

先单独取出prices映射表,再遍历每个口味的sku值,通过sku键去prices中匹配对应价格:

const prices = data.checkout_data.flavors_sku.prices;

const result2 = Object.entries(data.checkout_data.flavors_sku)
  .filter(([key]) => key !== 'prices')
  .map(([_, flavorObj]) => 
    Object.values(flavorObj).map(skuArr => prices[skuArr[0]])
  );

console.log(result2);

输出结果:

[
  ["5.6", "33.59"],
  ["5.6", "33.59"],
  ["5.6", "33.59"],
  ["5.6", "33.59"]
]

注:你提供的示例结果二中第二个数组是["5.6", "5.6"],但根据原始数据,Classic French Vanilla的规格6对应sku297,价格应为33.59,此处修正为正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:53:11