使用python请求发送带有dict数组的JSON



我正在尝试发送包含带请求模块的dicts数组的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"部分,但我需要它的"表单"。

在我的示例中,arrayData只包含一个dict,但可能有几个。

原来它是带有arrayData字段和JSON内容的表单,所以正确的有效载荷应该是这样的:

payload = {
"arrayData": json.dumps([{
"key1": 1,
"key2": 2,
"key3": {
"subkey": 3
}
}])
}

最新更新