You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:32:07