属于我们的eCommerce Integration系列
阅读完整指南数据映射和转换:处理不同的 API 和数据格式
每个电子商务平台都使用不同的语言。 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 | 订单项目[].SellerSKU | TransactionArray.Transaction.Item.SKU |
| lineItems[].数量 | 整数 | line_items[].数量 | 订单项目[].QuantityOrdered | TransactionArray.Transaction.QuantityPurchased |
| lineItems[].priceInCents | 整数 | line_items[].价格 * 100 | 订单商品[].商品价格.金额 * 100 | TransactionArray.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:各不相同 | 在内部将所有内容转换为克,按通道转换出站 |
| 文本字段中的 HTML | HTML 标签描述与纯文本要求 | 为纯文本通道剥离 HTML,为 HTML 通道保留 |
| 枚举不匹配 | 订单状态:“已付款”、“已完成”、“已确认” | 通过查找表映射到内部枚举 |
| Null 与空字符串 | 某些 API 将 null(未提供)与“”(显式为空)区分开来缺失时标准化为 null,明确为空时标准化为“” |
单位换算
单位换算错误会造成实际的财务损失。您网站上列出的重量为 2.2 公斤的产品在亚马逊上显示为 2.2 磅,这意味着运输成本估算错误,尺寸重量计算错误,并且客户收到的产品重量是预期的两倍。
重量换算
| 来自 | 克 | 至盎司 | 至 磅 | 到公斤 |
|---|---|---|---|---|
| 1克 | 1 | 0.03527 | 0.03527 0.002205 | 0.002205 0.001 |
| 1 盎司 | 28.3495 | 28.3495 1 | 0.0625 | 0.0625 0.02835 |
| 1 磅 | 453.592 | 16 | 16 1 | 0.45359 |
| 1公斤 | 1000 | 1000 35.274 | 35.274 2.20462 | 2.20462 1 |
规则:内部存储所有重量(以克为单位)。将出站转换为每个通道所需的任何单位。永远不要相信传入数据中的单位标签 - 验证该值对于产品类别是否有意义。笔记本电脑的重量是2克,显然是公斤。
尺寸转换
维度同样危险。亚马逊美国预计尺寸为英寸。亚马逊 DE 预计为厘米。您的运输软件可能需要毫米。
规则:内部存储所有尺寸(以毫米为单位)。转换每个通道的出站。验证尺寸在物理上合理。
货币换算
多币种处理又增加了一层。您的规范模型以基础货币的最小单位存储价格(美元为美分,英镑为便士,欧元为生丁)。
对于跨境订单,请存储原始货币金额和使用所用汇率换算后的基础货币金额。这将为与货币相关的差异创建审计跟踪。
数据标准化模式
原始市场数据很混乱。标准化会在它进入规范模型之前对其进行清理。
文本规范化
- 修剪空格:前导空格和尾随空格在 API 响应中很常见
- 标准化 Unicode:在适当的情况下将全角字符、智能引号和特殊字符转换为其 ASCII 等效字符
- 大小写标准化:以一致的大小写存储内部数据(例如,国家/地区代码大写,姓名标题大写,电子邮件小写)
- HTML 实体解码:
&到&、<到<等。
地址标准化
地址是跨通道最不一致的数据类型。标准化管道应该:
- 将自由文本地址解析为结构化组件(街道、城市、州、邮政、国家)
- 根据国家/地区格式规则验证邮政编码
- 将国家/地区标准化为 ISO 3166-1 alpha-2 代码(US、GB、DE — 不是“美国”、“英国”、“德国”)
- 将州/省标准化为标准缩写
- 验证城市/州/邮政组合在地理上是否一致
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 处理程序的响应 |
验证管道
每条记录在转换后都应通过验证管道:
- 模式验证:记录是否符合预期的结构?
- 类型验证:数字实际上是数字,日期实际上是日期吗?
- 业务规则验证:订单总数是否为正?送货地址是否位于您所服务的国家/地区?
- 参考验证:该 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 等人工智能驱动的解决方案帮助企业扩展规模。
作者
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
相关文章
电子商务的人工智能内容生成:产品描述、SEO 等
利用 AI 扩展电子商务内容:产品描述、SEO 元标签、电子邮件副本和社交媒体。质量控制框架和品牌声音一致性指南。
人工智能驱动的动态定价:实时优化收入
实施人工智能动态定价,通过需求弹性模型、竞争对手监控和道德定价策略来优化收入。架构和投资回报率指南。
电子商务人工智能欺诈检测:在不阻止销售的情况下保护收入
实施 AI 欺诈检测,捕获 95% 以上的欺诈交易,同时将误报率控制在 2% 以下。机器学习评分、行为分析和投资回报率指南。
更多来自eCommerce Integration
可组合商务:2026 年 MACH 架构指南
到 2026 年,掌握使用 MACH 架构的可组合商务。学习微服务、API 优先、云原生、无头策略,以实现可扩展的电子商务。
Odoo eBay 连接器:列表、订单和库存同步
为 Odoo 19 设置 Odoo eBay 连接器。从 Odoo 管理列表、自动订单同步、同步库存、处理退货以及管理多商店 eBay 帐户。
Shopify + Odoo ERP 集成:完整指南
将 Shopify 与 Odoo ERP 集成的综合指南 — 库存同步、订单管理、客户数据、财务报告和自动化工作流程。
管理 Shopify 上的退货和换货
Shopify 退货管理完整指南:政策设计、自动化工作流程、逆向物流、交换处理以及以有利的方式降低退货率。
使用 Hydrogen 的 Headless Shopify:构建高性能定制店面
使用 Hydrogen 框架构建无头 Shopify 店面的完整指南,涵盖 Remix、店面 API、Oxygen 托管和性能优化。
多渠道库存同步:防止缺货和超售
多渠道库存同步指南。涵盖实时同步方法、安全库存分配、ERP集成、超售预防和仓库管理。