一、数据结构核心框架
沃尔玛API返回的JSON数据采用三级嵌套结构,核心组成部分如下:
1. 状态标识层
json
json
{
"code": "0", // 状态码(0=成功,其他=失败)
"errorMessage": "success" // 错误信息描述
}
2. 商品详情主体层
json
json
"item_detail_response": {
"items": [ // 商品列表数组
{
"sku_id": "1234567890", // 商品唯一标识
"title": "商品标题", // 商品名称
"price": "120.00", // 当前售价
"original_price": "150.00", // 原价
"stock_quantity": 100, // 总库存量
"props_list": {"color": "红色", "size": "L"}, // 基础规格属性
"sku_list": [ // SKU级详细规格
{
"sku_id": "123",
"name": "红色",
"price": "120.00",
"stock": 50 // SKU级库存
}
]
}
]
}
二、关键字段映射方案
1. 价格字段映射
| 字段路径 | 数据类型 | 说明 | 示例值 |
|---|---|---|---|
item_detail_response.items[0].price |
字符串 | 当前销售价格 | "120.00" |
item_detail_response.items[0].original_price |
字符串 | 商品原价(可选) | "150.00" |
item_detail_response.items[0].discount_price |
字符串 | 折扣价格(可选) | "100.00" |
sku_list[0].price |
字符串 | SKU级销售价格 | "120.00" |
2. 库存字段映射
| 字段路径 | 数据类型 | 说明 | 示例值 |
|---|---|---|---|
item_detail_response.items[0].stock_quantity |
整数 | 商品总库存量 | 100 |
sku_list[0].stock |
整数 | SKU级库存量 | 50 |
3. 规格字段映射
| 字段路径 | 数据类型 | 说明 | 示例值 |
|---|---|---|---|
item_detail_response.items[0].props_list |
字典 | 基础规格属性(颜色/尺寸等) | {"color": "红色"} |
sku_list[0].name |
字符串 | SKU名称描述 | "红色" |
sku_list[0].sku_id |
字符串 | SKU唯一标识 | "123" |
三、结构化处理实现方案
Python代码示例
python
python
import json
# 模拟API响应数据
response_data = {
"code": "0",
"item_detail_response": {
"items": [{
"sku_id": "1234567890",
"title": "智能手表",
"price": "199.99",
"original_price": "299.99",
"stock_quantity": 50,
"props_list": {"color": "黑色", "size": "42mm"},
"sku_list": [
{"sku_id": "SKU001", "name": "黑色", "price": "199.99", "stock": 30},
{"sku_id": "SKU002", "name": "银色", "price": "219.99", "stock": 20}
]
}]
}
}
def parse_walmart_response(data):
# 状态检查
if data["code"] != "0":
raise ValueError(f"API请求失败: {data.get('errorMessage', '未知错误')}")
# 提取商品信息
item = data["item_detail_response"]["items"][0]
sku_list = item.get("sku_list", [])
# 结构化数据映射
structured_data = {
"商品ID": item["sku_id"],
"商品名称": item["title"],
"当前价格": float(item["price"]),
"原价": float(item.get("original_price", 0)) if item.get("original_price") else None,
"总库存": item["stock_quantity"],
"基础规格": item.get("props_list", {}),
"SKU详情": []
}
# 处理SKU级数据
for sku in sku_list:
structured_data["SKU详情"].append({
"SKU ID": sku["sku_id"],
"SKU名称": sku["name"],
"SKU价格": float(sku["price"]),
"SKU库存": sku["stock"]
})
return structured_data
# 执行解析
try:
structured_result = parse_walmart_response(response_data)
print(json.dumps(structured_result, indent=2, ensure_ascii=False))
except Exception as e:
print(f"数据解析失败: {str(e)}")
输出示例
css
json
{
"商品ID": "1234567890",
"商品名称": "智能手表",
"当前价格": 199.99,
"原价": 299.99,
"总库存": 50,
"基础规格": {
"color": "黑色",
"size": "42mm"
},
"SKU详情": [
{
"SKU ID": "SKU001",
"SKU名称": "黑色",
"SKU价格": 199.99,
"SKU库存": 30
},
{
"SKU ID": "SKU002",
"SKU名称": "银色",
"SKU价格": 219.99,
"SKU库存": 20
}
]
}
四、关键注意事项
-
字段稳定性:沃尔玛API字段可能随版本更新变化,建议定期验证字段路径
-
错误处理:
- 检查
code状态码 - 处理字段缺失情况(使用
.get()方法) - 数值类型转换异常处理
- 检查
-
扩展性设计:
- 支持多商品解析(遍历
items数组) - 处理多级规格嵌套(如尺寸-颜色组合)
- 支持多商品解析(遍历
-
性能优化:
- 大数据量时分页处理
- 缓存常用商品数据
- 异步请求处理
通过本方案可实现沃尔玛商品详情数据的结构化提取,满足价格监控、库存管理、规格分析等业务需求。实际使用时需结合具体API文档验证字段路径,并添加必要的异常处理和日志监控。