电商 ERP 接口返回的商品 JSON 通常有几个容易混淆的字段。
类目字段
"categoryId": 1000016,
"leafCategoryId": 51000671,
"categoryIds": ["1000016", "51000671"]
categoryId:主类目(一级)leafCategoryId:叶子类目,即商品实际发布的最末级类目categoryIds:完整类目路径数组
实际使用的是 leafCategoryId,而不是 categoryId。
如果接口返回的 leafCategoryName 为 null,需要单独查询类目名称:
SELECT * FROM category WHERE id = 51000671
或调用类目接口:
GET /category/get?id=51000671
specifications 与 skuList 的区别
这是最常混淆的地方:
| 字段 | 含义 | 用途 |
|---|---|---|
specifications | 规格定义模板 | 描述有哪些规格维度和可选值 |
skuList | 实际销售 SKU | 每个 SKU 的具体价格、库存、规格组合 |
specifications 示例
"specifications": [
{
"name": "颜色",
"values": [{"value": "米白色"}]
},
{
"name": "尺码",
"values": [
{"value": "M", "note": "建议80-100斤内"},
{"value": "L", "note": "建议100-115斤内"},
{"value": "XL"},
{"value": "2XL"},
{"value": "3XL"},
{"value": "4XL"}
]
}
]
这是模板,说明商品有”颜色”和”尺码”两个规格维度,以及每个维度的可选值。
skuList 示例
"skuList": [
{
"skuOuterId": "12644-米白色-M",
"specValue": "米白色;M",
"salesPrice": 59.8,
"stock": 5000,
"_skuid": "v_1776944461271_970-v_M_1776944482303_3644"
}
]
每个 SKU 对应一个规格组合,有独立的价格和库存。
skuOuterId 与 specValue
skuOuterId:商家自定义编码,格式通常是商品编号-颜色-尺码specValue:用分号拼接的规格值,如米白色;M_skuid:系统内部键,由各规格的valueKey拼接,用于唯一标识规格组合
遍历所有 SKU 的写法
for (const item of products) {
for (const sku of item.skuList || []) {
console.log({
title: item.title,
sku: sku.skuOuterId,
spec: sku.specValue,
price: sku.salesPrice,
stock: sku.stock
});
}
}
for item in products:
for sku in item.get("skuList", []):
print(
item["title"],
sku["skuOuterId"],
sku["specValue"],
sku["salesPrice"],
sku["stock"]
)
核心字段速查
| 字段 | 含义 |
|---|---|
leafCategoryId | 真正的叶子类目 ID |
specifications | 规格维度定义(模板) |
skuList | 实际销售 SKU 列表 |
specValue | SKU 规格值拼接字符串 |
skuOuterId | 商家 SKU 编码 |
stock | 该 SKU 库存 |
salesPrice | 销售价 |
marketPrice | 划线价(原价展示) |
