【发布时间】:2018-12-16 09:40:00
【问题描述】:
我正在尝试使用请求模块发送包含字典数组的 json。 这是我的代码示例:
payload = {
"arrayData": [
{
"key1": 1,
"key2": 2,
"key3": {
"subkey": 3
}
}
]
}
r = requests.post(
'https://httpbin.org/post',
data = payload,
)
print(r.text)
我认为我的请求如下所示:
{
"args": {},
"data": "",
"files": {},
"form": {
"arrayData": [
"key1",
"key2",
"key3"
]
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "44",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
},
"json": null,
"url": "https://httpbin.org/post"
}
问题是 arrayData 有时会变成普通的值列表。
以表单形式发送该 json 对我的任务至关重要,但我不知道如何做到这一点。使用 json=payload 或 data=json.dumps(payload) 发送请求并不能解决问题,因为解析的数据进入“json”部分,但我需要它在“form”中。
在我的示例中,arrayData 仅包含一个 dict,但可能有多个。
【问题讨论】:
-
您的意思是将其作为表单数据发送吗?也许您可能想发送 JSON:
data=json.dumps(payload) -
是的。我试过了,它解析正确,但进入“json”部分,“form”变为空。
-
@Rodriger 您正在使用的 API 到底是什么?
-
它需要带有包含 JSON dicts 数组的 arrayData 字段的表单