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

如何根据请求国家动态更新静态Payload中各字段的货币符号?

问题:如何根据指定国家和orderId处理静态Payload

给定如下静态Payload,当传入指定国家(例如意大利)及orderId(例如11111101)时,需在保持Payload结构不变的前提下完成两项操作:

  • 按orderId过滤数据,仅保留匹配的订单
  • 将所有格式化价格字段中的货币符号替换为对应国家的符号

静态Payload示例

[
    {
        "orderId": "11111101",
        "details": {
            "TotalPrice": {
                "NetPrice__c": 11.11,
                "NetPriceFormatted__c": "11,11 $"
            },
            "TotalCartValue__c": 11.11,
            "TotalCartValueFormatted__c": "11,11 $",
            "TotalTaxPrice__c": 11.11,
            "TotalTaxPriceFormatted__c": "11,11 $",
            "TotalDiscountPrice__c": 11.11,
            "TotalDiscountPriceFormatted__c": "11,11 $",
            "products": [
                {
                    "SKUNumber__c": "111111-01",
                    "Quantity": "1",
                    "UnitPrice": 11.11,
                    "UnitPriceFormatted__c": "11,11 $",
                    "TotalPrice": 11.11,
                    "TotalPriceFormatted__c": "11,11 $",
                    "Discount__c": 11.11,
                    "DiscountFormatted__c": "11,11 $",
                    "ProductName__c": "Apple",
                    "MachineFriendlyName__c": "iPhone",
                    "DiscountValue__c": 11.11,
                    "bundles": []
                }
            ],
             "shippingModes": [
                "ClickAndCollect",
                "ScheduledDelivery",
                "StandardDelivery"
            ],
            "TotalItems__c": 1,
            "PromoCode__c": null,
            "PromoStatus__c": null
        }
    },
    {
        "orderId": "22222202",
        "details": {
            "TotalPrice": {
                "NetPrice__c": 22.22,
                "NetPriceFormatted__c": "22,22 $"
            },
            "TotalCartValue__c": 22.22,
            "TotalCartValueFormatted__c": "22,22 $",
            "TotalTaxPrice__c": 22.22,
            "TotalTaxPriceFormatted__c": "22,22 $",
            "TotalDiscountPrice__c": 22.22,
            "TotalDiscountPriceFormatted__c": "22,22 $",
            "products": [
                {
                    "SKUNumber__c": "222222-02",
                    "Quantity": "1",
                    "UnitPrice": 22.22,
                    "UnitPriceFormatted__c": "22,22 $",
                    "TotalPrice": 22.22,
                    "TotalPriceFormatted__c": "22,22 $",
                    "Discount__c": 22.22,
                    "DiscountFormatted__c": "22,22 $",
                    "ProductName__c": "Samsung",
                    "MachineFriendlyName__c": "Galaxy",
                    "DiscountValue__c": 22.22,
                    "bundles": []
                }
            ],
             "shippingModes": [
                "ClickAndCollect",
                "ScheduledDelivery",
                "StandardDelivery"
            ],
            "TotalItems__c": 1,
            "PromoCode__c": null,
            "PromoStatus__c": null
        }
    }
]

处理示例结果

当指定国家为意大利、orderId为11111101时,处理后的结果如下:

[
    {
        "orderId": "11111101",
        "details": {
            "TotalPrice": {
                "NetPrice__c": 11.11,
                "NetPriceFormatted__c": "11,11 €"
            },
            "TotalCartValue__c": 11.11,
            "TotalCartValueFormatted__c": "11,11 €",
            "TotalTaxPrice__c": 11.11,
            "TotalTaxPriceFormatted__c": "11,11 €",
            "TotalDiscountPrice__c": 11.11,
            "TotalDiscountPriceFormatted__c": "11,11 €",
            "products": [
                {
                    "SKUNumber__c": "111111-01",
                    "Quantity": "1",
                    "UnitPrice": 11.11,
                    "UnitPriceFormatted__c": "11,11 €",
                    "TotalPrice": 11.11,
                    "TotalPriceFormatted__c": "11,11 €",
                    "Discount__c": 11.11,
                    "DiscountFormatted__c": "11,11 €",
                    "ProductName__c": "Apple",
                    "MachineFriendlyName__c": "iPhone",
                    "DiscountValue__c": 11.11,
                    "bundles": []
                }
            ],
             "shippingModes": [
                "ClickAndCollect",
                "ScheduledDelivery",
                "StandardDelivery"
            ],
            "TotalItems__c": 1,
            "PromoCode__c": null,
            "PromoStatus__c": null
        }
    }
]

解决方案(JavaScript实现)

1. 定义货币符号映射表

提前维护国家与对应货币符号的映射关系:

const currencyMap = {
  '意大利': '€',
  '美国': '$',
  '德国': '€',
  // 可按需扩展更多国家
};

2. 按orderId过滤订单

从原始Payload中筛选出匹配目标orderId的订单:

function filterOrderByOrderId(payload, targetOrderId) {
  return payload.filter(order => order.orderId === targetOrderId);
}

3. 递归替换货币符号

由于格式化价格字段分布在多层嵌套结构中,使用递归遍历替换所有以Formatted__c结尾的字段的货币符号:

function replaceCurrencySymbol(obj, targetSymbol) {
  for (const key in obj) {
    if (obj.hasOwnProperty(key)) {
      const value = obj[key];
      // 匹配格式化价格字段,替换末尾的货币符号
      if (typeof value === 'string' && key.endsWith('Formatted__c')) {
        // 通用正则:替换末尾非数字、非逗号的字符
        obj[key] = value.replace(/[^\d,]+$/, targetSymbol);
      }
      // 递归处理嵌套对象或数组
      else if (typeof value === 'object' && value !== null) {
        replaceCurrencySymbol(value, targetSymbol);
      }
    }
  }
  return obj;
}

4. 整合逻辑得到结果

将过滤和替换逻辑组合,生成最终处理后的Payload:

// 原始静态Payload
const originalPayload = [/* 填入原始Payload数据 */];

// 目标参数
const targetCountry = '意大利';
const targetOrderId = '11111101';

// 执行处理
const filteredOrders = filterOrderByOrderId(originalPayload, targetOrderId);
const targetSymbol = currencyMap[targetCountry] || '$'; // 默认符号为$
const processedPayload = filteredOrders.map(order => replaceCurrencySymbol({...order}, targetSymbol));

// 输出结果
console.log(JSON.stringify(processedPayload, null, 2));

注意事项

  • 递归逻辑可覆盖所有层级的格式化价格字段,无需手动处理嵌套结构
  • 货币映射表可根据业务需求随时扩展
  • 正则表达式可根据原始Payload中的货币符号格式调整,确保替换准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:07:02