在淘宝商品详情API的响应数据中,券后价格通常需要通过多个字段计算得出。以下是解析逻辑的关键点和示例代码。获取API调用地址
一:关键解析步骤
- 获取原始价格 从商品基本信息中提取原始价格字段:
"item": { "price": "99.00" // 商品原始价格(字符串格式) }
- 解析优惠券信息
- 优惠券信息可能以字符串形式存储在coupon_info字段中(需正则解析):
"coupon_info": "满90元减10元"
- 或从独立字段中获取(优先使用):
"coupon": { "denomination": "10.00", // 券面额(单位:元) "start_fee": "90.00" // 使用门槛(单位:元) }
- 计算券后价格
-
满足门槛:券后价 = 原始价格 - 券面额
-
不满足门槛:券后价 = 原始价格(无法使用优惠券)
二:Python解析示例代码
import re
import json
def parse_final_price(api_response):
# 1. 解析原始价格
# 封装好API供应商demo url=o0b.cn/ibrad 复制链接获取测试
item = api_response.get("item", {})
original_price = float(item.get("price", "0"))
# 2. 尝试从结构化字段获取优惠券信息
coupon = api_response.get("coupon", {})
if coupon:
denomination = float(coupon.get("denomination", "0"))
start_fee = float(coupon.get("start_fee", "0"))
else:
# 3. 从字符串解析优惠券信息(正则表达式)
coupon_info = api_response.get("coupon_info", "")
match = re.search(r"满(\d+.?\d*)元减(\d+.?\d*)元", coupon_info)
if match:
start_fee = float(match.group(1))
denomination = float(match.group(2))
else:
denomination = start_fee = 0 # 无有效券
# 4. 计算券后价格
if original_price >= start_fee: # 检查是否满足门槛
final_price = original_price - denomination
else:
final_price = original_price
return round(final_price, 2)
# 示例API响应数据
api_data = {
"item": {"price": "99.00"},
"coupon_info": "满90元减10元"
# 或使用结构化字段: "coupon": {"denomination": "10.00", "start_fee": "90.00"}
}
result = parse_final_price(api_data)
print(f"券后价格: {result}元") # 输出:券后价格: 89.0元
三:关键注意事项
- 字段兼容性
-
优先使用结构化字段coupon.denomination和coupon.start_fee(更可靠)。
-
备用方案:通过正则解析字符串coupon_info(格式可能变动)。
- 单位统一 所有金额需转换为浮点数(单位:元)再计算。
- 多优惠券逻辑 若存在多张券,通常取最大面额且满足门槛的券(需遍历券列表并比较)。
- 异常处理
-
检查字段是否存在(如item或coupon_info可能为空)。
-
使用try-except捕获类型转换错误。
四、响应数据解析
商品sku
通过以上步骤即可准确计算淘宝商品的券后价格。实际使用中请根据API返回的具体字段调整解析逻辑。