Я пытаюсь отправить json, содержащий массив dicts с модулем запросов. Вот пример моего кода:
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, но их может быть несколько.
Ага. Я пробовал это, он правильно разбирает, но переходит в часть «json», а «форма» становится пустой.
@Rodriger, какой именно API вы ожидаете использовать?
Он ожидает формы с полем arrayData, содержащим массив слов JSON.
Возможный дубликат Публикация JSON с использованием запросов Python
@Rodriger, в этом нет никакого смысла ...?






Оказывается, это была форма с полем arrayData и содержимым JSON, поэтому правильная полезная нагрузка должна быть такой:
payload = {
"arrayData": json.dumps([{
"key1": 1,
"key2": 2,
"key3": {
"subkey": 3
}
}])
}
Вы хотели отправить его как данные формы? Возможно, вы захотите вместо этого отправить JSON:
data=json.dumps(payload)