如何在REST API的JSON payload中填充购物车商品字典列表?
问题
对接REST API时,需要构造包含自定义值的JSON请求,要求payload的items字段包含所有cart_item的商品数据。现有初始代码:
payload = { "items": [], }
尝试了以下循环但不知道如何将生成的item存入payload["items"]:
for cart_item in cart_items: item = [ { "reference_id": f"{cart_item.sku}", "name": f"{cart_item.product.name}", "quantity": cart_item.quantity, "unit_amount": cart_item.product.price }, ]
期望构造出如下格式的payload并发送POST请求:
payload = { "items": [ { "reference_id": "SKU49FS20DD", "name": "Produto 1", "quantity": 1, "unit_amount": 130 }, { "reference_id": "SKU42920SSD", "name": "Produto 2", "quantity": 1, "unit_amount": 100 } ], } response = requests.request( "POST", url, headers=headers, json=payload )
同时不确定是否需要手动在JSON与字典间转换后再发送请求。
解决方案
1. 修正item定义并填充payload的items列表
你当前代码把item定义成了包裹单个字典的列表,这是冗余操作。只需直接生成单个字典,再用append()方法将其添加到payload["items"]列表中即可:
payload = { "items": [], } for cart_item in cart_items: # 直接生成单个商品字典 item = { "reference_id": f"{cart_item.sku}", "name": f"{cart_item.product.name}", "quantity": cart_item.quantity, "unit_amount": cart_item.product.price } # 将商品字典添加到items列表 payload["items"].append(item)
2. JSON与字典的转换说明
不需要手动转换。requests库的request()方法在指定json参数时,会自动将Python字典序列化为JSON字符串,同时设置正确的Content-Type请求头,直接传入payload字典即可。
完整代码示例
import requests payload = { "items": [], } # 填充商品数据到payload for cart_item in cart_items: item = { "reference_id": f"{cart_item.sku}", "name": f"{cart_item.product.name}", "quantity": cart_item.quantity, "unit_amount": cart_item.product.price } payload["items"].append(item) # 发送POST请求 response = requests.request( "POST", url, headers=headers, json=payload ) # 可选:查看响应状态与结果 print(response.status_code) print(response.json())
内容的提问来源于stack exchange,提问作者Murilo Souza
相关产品推荐
相关产品推荐

