如何在Python中将JSON转换为x-www-form-urlencoded格式?
问题解决:将嵌套JSON转换为x-www-form-urlencoded格式
你的代码问题在于直接将嵌套字典传入data参数时,requests会把嵌套层级的字典拆分成多个键值对,而不是把parameters对应的嵌套结构编码为JSON字符串后再进行URL编码。要得到预期的结果,需要先把嵌套的parameters字典转为JSON字符串,再构造顶层参数传入。
修改后的代码
import requests import json url = "https://api.baselinker.com/connector.php" # 先将嵌套的parameters结构转为带缩进的JSON字符串 parameters_json = json.dumps({ "inventory_id": 7062, "text_fields": {"name": "Test-WW"}, "sku": "PF-0610" }, indent=2) # 构造顶层参数,parameters对应上述JSON字符串 params = { "method": "addInventoryProduct", "parameters": parameters_json } headers = { 'X-BLToken': 'X-BLTOKEN', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=params) print(response.text)
关键修改说明
- 使用
json.dumps()将嵌套的parameters字典转换为JSON字符串,通过indent=2保留换行和缩进,和你预期的编码前格式一致。 - 顶层的
params字典现在只有两个键:method和parameters,其中parameters的值是已经序列化好的JSON字符串。 - requests在处理
data参数时,会自动将这两个键值对编码为x-www-form-urlencoded格式,其中parameters对应的JSON字符串会被URL编码,最终得到你需要的结果。
内容的提问来源于stack exchange,提问作者Hajaro
相关产品推荐
相关产品推荐

