跳至主要内容

数据映射和转换:处理不同的 API 和数据格式

跨电子商务 API 和数据格式掌握字段映射、数据标准化、单位转换、货币处理和类别分类映射。

E
ECOSIRE Research and Development Team
|2026年3月15日4 分钟阅读663 字数|

每个电子商务平台都使用不同的语言。 Amazon 以带有嵌套地址对象的 XML 形式发送订单。 Shopify 返回带有平面字符串字段的 JSON。 eBay 使用 REST 和传统 XML-RPC 的混合。 WooCommerce 将元数据嵌入键值数组中。您的 ERP 期望所有内容都采用特定的内部格式并具有经过验证的数据类型。

属于我们的电子商务集成系列

阅读完整指南

每个电子商务平台都使用不同的语言。 Amazon 以带有嵌套地址对象的 XML 形式发送订单。 Shopify 返回带有平面字符串字段的 JSON。 eBay 使用 REST 和传统 XML-RPC 的混合。 WooCommerce 将元数据嵌入键值数组中。您的 ERP 期望所有内容都采用特定的内部格式并具有经过验证的数据类型。

数据映射和转换是使多渠道集成发挥作用的转换层。如果正确的话,数据就会在系统之间静静地流动。如果出错,您需要花费数小时来调试为什么客户电话号码会出现在城市字段中,或者为什么产品权重会偏离 2.2 倍。

要点

  • 规范数据模型(内部标准)消除了 N 到 N 映射,有利于 N 到 1 加 1 到 N
  • 单位转换错误是跨境电商中最常见、成本最高的数据映射错误
  • 防御性解析 - 验证每个字段,默认每个缺失值 - 防止级联故障
  • 将您的映射与您的代码一起进行版本控制; API 更改会在没有版本化模式的情况下悄然破坏集成

规范数据模型

如果没有规范模型,将 5 个渠道连接到 ERP 需要 10 个独特的映射(5 个入站 + 5 个出站),每个映射都处理其他系统的怪癖。添加第六个通道需要另外 2 个映射。

通过规范模型,每个通道都映射到单个内部格式或从单个内部格式映射。添加第六个通道仅需要 1 个新的入站映射器和 1 个新的出站映射器 - 无论存在多少其他通道。

设计规范模型

您的规范模型应该是:

  • 所有通道的超集:包括任何通道可能需要的每个字段,即使某些通道不使用每个字段
  • 强类型:日期采用 ISO 8601,重量以克为单位,货币使用 ISO 4217 代码,价格为整数(分)而不是浮点数
  • 版本化:架构更改是显式的且向后兼容
  • 记录:每个字段都有描述、数据类型、验证规则和源映射

示例:规范订单模型

简化的规范顺序:

领域类型来源:Shopify来源:亚马逊来源:eBay
外部订单 ID字符串订单 ID亚马逊订单ID订单ID
客户邮箱字符串订单.电子邮件买家信息.买家电子邮件TransactionArray.Transaction.Buyer.Email
运输名称字符串订单.送货地址.名称送货地址.名称送货地址.名称
行项目[].sku字符串line_items[].sku订单项目[].SellerSKUTransactionArray.Transaction.Item.SKU
lineItems[].数量整数line_items[].数量订单项目[].QuantityOrderedTransactionArray.Transaction.QuantityPurchased
lineItems[].priceInCents整数line_items[].价格 * 100订单商品[].商品价格.金额 * 100TransactionArray.Transaction.TransactionPrice * 100
货币字符串(ISO 4217)订单.货币订单总计.货币代码TransactionArray.Transaction.AmountPaid.currencyID
运输方式枚举order.shipping_lines[0].title船舶服务水平运输服务已选择。运输服务
订单日期字符串(ISO 8601)order.created_at购买日期创建日期

请注意每个源如何映射到相同的规范结构。该转换处理路径差异(嵌套与扁平)、命名差异(camelCase、PascalCase、snake_case)以及格式差异(日期、数字、货币)。


常见的绘图挑战和解决方案

数据映射充满了边缘情况。以下是最常见的问题以及解决方法。

挑战示例解决方案
缺少字段eBay 不会向客人发送电子邮件以供客人结账默认为空字符串,手动审核标志
不同的日期格式Shopify:ISO 8601,Amazon:ISO 8601,eBay:有时为美国格式使用库(dayjs、date-fns)进行解析,始终存储为 ISO 8601
浮动价格与整数价格Shopify:“19.99”(字符串),Amazon:19.99(浮点)乘以 100,四舍五入,存储为整数分
名称分割一个字段:“John Smith” vs 两个字段:第一个/最后一个在最后一个空格上拆分,处理边缘情况(Jr.、III、van der)
地址格式美国:以 2 字母代码表示的州,英国:无州,德国:不同格式规范化为结构化地址(第 1 行、第 2 行、城市、州、邮政、国家/地区)
电话号码格式“+1 (555) 123-4567”与“5551234567”与“+15551234567”剥离非数字,用 libphonenumber 解析,以 E.164 格式存储
重量单位Shopify:磅/盎司,Amazon:可配置,eBay:各不相同在内部将所有内容转换为克,按通道转换出站
文本字段中的 HTMLHTML 标签描述与纯文本要求为纯文本通道剥离 HTML,为 HTML 通道保留
枚举不匹配订单状态:“已付款”、“已完成”、“已确认”通过查找表映射到内部枚举
Null 与空字符串某些 API 将 null(未提供)与“”(显式为空)区分开来缺失时标准化为 null,明确为空时标准化为“”

单位换算

单位换算错误会造成实际的财务损失。您网站上列出的重量为 2.2 公斤的产品在亚马逊上显示为 2.2 磅,这意味着运输成本估算错误,尺寸重量计算错误,并且客户收到的产品重量是预期的两倍。

重量换算

来自克至盎司至 磅到公斤
1克10.035270.0022050.001
1 盎司28.349510.06250.02835
1 磅453.5921610.45359
1公斤100035.2742.204621

规则:内部存储所有重量(以克为单位)。将出站转换为每个通道所需的任何单位。永远不要相信传入数据中的单位标签 - 验证该值对于产品类别是否有意义。笔记本电脑的重量是2克,显然是公斤。

尺寸转换

维度同样危险。亚马逊美国预计尺寸为英寸。亚马逊 DE 预计为厘米。您的运输软件可能需要毫米。

规则:内部存储所有尺寸(以毫米为单位)。转换每个通道的出站。验证尺寸在物理上合理。

货币换算

多币种处理又增加了一层。您的规范模型以基础货币的最小单位存储价格(美元为美分,英镑为便士,欧元为生丁)。

对于跨境订单,请存储​​原始货币金额和使用所用汇率换算后的基础货币金额。这将为与货币相关的差异创建审计跟踪。


数据标准化模式

原始市场数据很混乱。标准化会在它进入规范模型之前对其进行清理。

文本规范化

  • 修剪空格:前导空格和尾随空格在 API 响应中很常见
  • 标准化 Unicode:在适当的情况下将全角字符、智能引号和特殊字符转换为其 ASCII 等效字符
  • 大小写标准化:以一致的大小写存储内部数据(例如,国家/地区代码大写,姓名标题大写,电子邮件小写)
  • HTML 实体解码:&amp; 到 &、&lt; 到 < 等。

地址标准化

地址是跨通道最不一致的数据类型。标准化管道应该:

  1. 将自由文本地址解析为结构化组件(街道、城市、州、邮政、国家)
  2. 根据国家/地区格式规则验证邮政编码
  3. 将国家/地区标准化为 ISO 3166-1 alpha-2 代码(US、GB、DE — 不是“美国”、“英国”、“德国”)
  4. 将州/省标准化为标准缩写
  5. 验证城市/州/邮政组合在地理上是否一致

SKU 标准化

来自不同来源的 SKU 可能对同一产品使用不同的格式:

  • 供应商:“ABC-001-BLK-L”
  • 亚马逊:“ABC001BLKL”
  • Shopify:“abc-001-black-large”
  • eBay:“ABC 001 黑色 L”

您的规范模型应使用单一内部 SKU 格式,并维护一个将外部 SKU 格式映射到内部 ID 的查找表。


API 格式处理

不同的API以不同的格式返回数据。您的转换层必须处理所有这些。

JSON(Shopify、沃尔玛、TikTok 商店)

大多数现代 API 使用 JSON。解析很简单,但要注意:

  • 数字精度:JSON 数字可能会丢失大整数的精度(订单 ID 高于 2^53)。如果需要,解析为字符串。
  • 嵌套结构:Shopify 将送货地址嵌套在响应内的订单内。使用正确的路径导航。
  • 分页:基于光标 (Shopify) 或基于页面。处理页面之间的速率限制。

XML(Amazon SP-API 报告、eBay)

XML 增加了命名空间、属性与元素以及编码声明的复杂性。

  • 命名空间处理:Amazon 报告使用必须在 XPath 查询工作之前注册的 XML 命名空间
  • CDATA 部分:文本内容可能包含在 CDATA 中,一些解析器会剥离而另一些解析器会保留它
  • 字符编码:始终解析为 UTF-8。一些旧版源声明 ISO-8859-1。

CSV/TSV(Google 购物、亚马逊平面文件)

基于提要的渠道接受表格数据。

  • 列顺序很重要:某些提要与位置相关,而不与标题相关
  • 转义:包含逗号的字段必须加引号。包含引号的字段必须使用双引号。
  • 编码:文件开始处的 BOM(字节顺序标记)会导致某些系统中解析失败。剥掉它。
  • 行结尾:Windows (CRLF) 与 Unix (LF)。解析之前进行标准化。

EDI(企业零售、3PL)

大型零售商和 3PL 仍在使用电子数据交换。 EDI 文档(850 采购订单、856 提前发货通知、810 发票)使用 X12 或 EDIFACT 标准定义的固定宽度或分隔符分隔格式。


转换中的错误处理

当数据与您预期的模式不匹配时,转换层必须决定:失败、默认或标记。

策略矩阵

错误类型战略示例
缺少必填字段失败(拒绝记录)无需客户电子邮件即可订购
缺少可选字段默认值没有电话号码 — 默认为 null
格式无效尝试更正,如果无法纠正,请标记日期“03/15/2026”解析为 ISO
超出范围值标记供审查重量 0 克(可能丢失)
未知的枚举值映射到“其他”,标记以供审核未查找到新的运输方式
编码问题清洁并记录产品标题中的 Mojibake
架构版本不匹配使用版本适配器进行转换API v2 对 v3 处理程序的响应

验证管道

每条记录在转换后都应通过验证管道:

  1. 模式验证:记录是否符合预期的结构?
  2. 类型验证:数字实际上是数字,日期实际上是日期吗?
  3. 业务规则验证:订单总数是否为正?送货地址是否位于您所服务的国家/地区?
  4. 参考验证:该 SKU 是否存在于您的产品目录中?

验证失败的记录将被隔离——存储在错误队列中以供手动检查,而不是默默地删除或使用错误数据进行处理。

要监控这些验证失败,请参阅集成监控。


Versioning and Change Management

API 发生变化。 Shopify 每个季度都会推出新的 API 版本。 Amazon 定期更新 SP-API 模型。 eBay 弃用旧端点。您的映射层必须在不停机的情况下处理这些更改。

版本控制策略

  • 固定 API 版本:始终指定您正在调用的 API 版本。 Shopify 允许您请求 2025-01。 Amazon SP-API 使用过时的模型版本。
  • 版本映射器:当通道 API 更改时,创建新的映射器版本而不是修改现有版本。在过渡期间并行运行两个版本。
  • 自动回归测试:对于每个映射器,维护一组样本输入和预期输出。当映射器发生变化时,测试会捕获意外的回归。
  • 弃用监控:订阅 API 变更日志和日落通知。在弃用日期前 60 天规划迁移。

完整的集成架构请参见支柱帖子:终极电子商务集成指南。


常见问题

如何处理一个通道上存在但另一个通道上不存在的字段?

您的规范模型包括所有字段的超集。当从缺少字段的通道转换入站数据时,请将其设置为 null 或合理的默认值。当将出站转换为不接受字段的通道时,只需忽略它即可。规范模型充当通用翻译器——并非每种语言都有一个词来代表每个概念,这很好。

Node.js 堆栈中数据转换的最佳库是什么?

对于 JSON 转换,JSONata、Lodash(用于路径访问和操作)和 Zod(用于验证)等库可以满足大多数需求。对于 XML,使用 fast-xml-parser 进行解析,使用 xmlbuilder2 进行构建。对于 CSV,Papa Parse 可以很好地处理边缘情况。对于复杂的 ETL 管道,请考虑 Apache NiFi 或具有全面单元测试的自定义转换函数。

如何在不使用实时 API 的情况下测试数据映射?

将真实的 API 响应记录为固定装置并在单元测试中使用它们。每个映射器都应该有一个全面的测试套件,其中包含实际示例、边缘情况(空字段、最大长度、特殊字符)和错误情况(格式错误的数据)。在每次修改映射代码的提交时在 CI/CD 中运行这些测试。 Nock (Node.js) 或 WireMock (Java) 等工具可以模拟 API 端点以进行集成测试。

我应该使用 ETL 工具还是编写自定义转换代码?

对于与知名平台的标准电子商务集成,应用程序层中的自定义代码(Node.js/TypeScript 或 Python)比单独的 ETL 工具更易于维护。当您将 20 多个数据源与复杂的转换管道集成时,ETL 平台(Fivetran、Airbyte、Apache NiFi)会增加价值。对于 3-8 通道电子商务集成,具有良好测试覆盖率的专用映射器更简单且更易于调试。


下一步是什么

数据映射是使多渠道集成可靠的基础。当您的转换层优雅地处理每个边缘情况时,集成堆栈的其余部分将在干净、一致、经过验证的数据上运行 - 并且深夜调试会话就会消失。

探索 ECOSIRE 的集成服务 用于将 Odoo 连接到 15 个以上市场的预构建数据映射器,或联系我们的团队 讨论集成的自定义转换要求。


由 ECOSIRE 发布 — 通过 Odoo ERP、Shopify 电子商务 和 OpenClaw AI 等人工智能驱动的解决方案帮助企业扩展规模。

E

作者

ECOSIRE Team

技术写作

ECOSIRE 技术写作团队的内容涵盖 Odoo ERP、Shopify 电子商务、AI 智能体、Power BI 分析、GoHighLevel 自动化以及企业软件最佳实践。我们的指南帮助企业做出明智的技术决策。

ECOSIRE

扩展您的 Shopify 商店

针对高增长电子商务的定制开发、优化和迁移服务。