京东商品详情API(如jd.union.open.goods.detail.query)返回的JSON数据采用多层嵌套结构,核心包含以下模块及字段解析:
1. 顶层响应结构
json{ "code": 0, "message": "success", "requestId": "abc123", "data": { "product": { ... }, "skus": [...] }}code:状态码(0表示成功,非0需检查错误信息)
message:响应描述
requestId:请求唯一标识,用于问题排查
data:核心数据容器,包含商品主体信息、SKU列表等
2. 商品主体信息(data.product)
json"product": { "productId": 100012345678, "title": "京东京造无线蓝牙耳机", "brandName": "京东京造", "category": "电子产品/耳机", "price": { "salePrice": 199.00, "marketPrice": 299.00, "originalPrice": 299.00 }, "stock": { "stockNum": 1000, "stockState": 33, // 33表示有货 "limitBuyNum": 5 }, "images": [ "https://img10.360buyimg.com/n1/jfs/t1/123456/7/1234567890.jpg" ], "videos": [ "https://video.jd.com/1234567890.mp4" ], "specification": [ {"key": "处理器", "value": "Intel Core i7"}, {"key": "内存容量", "value": "16GB"} ], "sales": { "monthSales": 356, "commentCount": 1254, "goodCommentRate": "98%" }, "afterSaleService": { "returnPolicy": "7天无理由退换货", "warranty": "1年官方保修" }}3. SKU列表(data.skus)
json"skus": [ { "skuId": 12345678, "skuName": "京东京造无线蓝牙耳机 白色 标准版", "specInfo": { "颜色": "白色", "版本": "标准版" }, "price": 199.00, "stock": 1000, "imageUrl": "https://img10.360buyimg.com/n1/jfs/t1/234567/8/234567890.jpg" }, { "skuId": 12345679, "skuName": "京东京造无线蓝牙耳机 黑色 Pro版", "specInfo": { "颜色": "黑色", "版本": "Pro版" }, "price": 299.00, "stock": 500 }]4. 关键字段详解
价格体系:
salePrice:当前促销价marketPrice:市场参考价originalPrice:商品原价促销信息可能包含
couponInfo(如"满1000减50")库存状态:
stockNum:实时库存数量stockState:状态码(33表示有货,其他值需参考文档)规格参数:
嵌套在
specification数组中,键值对形式存储SKU级规格通过
specInfo映射,支持多规格组合查询多媒体资源:
主图、详情图、视频链接采用CDN加速,建议客户端实现懒加载优化
售后服务:
包含退换货政策、保修期限等,不同品类可能扩展字段
5. 特殊场景处理
多规格SKU映射:通过
specInfo构建“规格组合-SKU”映射表,支持按颜色、尺寸等维度筛选数据脱敏:非会员用户可能仅显示“有货/无货”,真实库存需通过规格接口联动计算
促销信息整合:分散在多个字段的促销活动(满减、优惠券、赠品)需结构化解析
终端差异:PC端、移动端、微信端返回的价格、促销信息可能存在35%以上差异
6. 解析最佳实践
python# 示例:安全提取商品标题与当前价格def parse_product(response): data = response.get("data", {}) product = data.get("product", {}) return { "title": product.get("title", "未知商品"), "current_price": product.get("price", {}).get("salePrice", 0.0), "original_price": product.get("price", {}).get("originalPrice", 0.0) }# 示例:构建SKU规格映射表def build_sku_map(skus): sku_map = {} for sku in skus: spec_key = tuple(sorted(sku.get("specInfo", {}).items())) sku_map[spec_key] = sku.get("skuId") return sku_map7. 注意事项
频率限制:默认200次/分钟,企业认证账号可申请提额
字段缺失处理:使用
dict.get()避免KeyError,设置默认值数据更新:价格/库存实时更新,建议设置5-10分钟本地缓存
错误处理:HTTP 429需指数退避重试,非0状态码需检查错误信息
通过以上结构化解析,可精准提取商品核心信息,支撑价格监控、竞品分析、库存同步等电商场景需求。实际开发需结合京东开放平台最新文档动态调整字段映射逻辑。