requests экранирование экранирования?
Я экранирую бэк слэшем некоторые кавычки, как это требует документация API:
import requests
r = requests.post(f"https://iiko.biz:9900/api/0/events/eventsMetadata?access_token={token}&request_timeout={requestTimeout}", json= {"organizationId" : organizainonId, "eventsSettings": "{\"fromRevision\": \"-1\", \"dateFrom\": \"2020-07-07 12:00:00\", \"dateTo\": \"2020-08-11 12:00:00\"}"})
Но, когда я выполняю r.request.body , то вижу там следующее:
b'{"organizationId": "83xxxx1-xxxx-11e7-xxxx-d8d382565926f", "eventsSettings": "{\\"fromRevision\\": \\"-1\\", \\"dateFrom\\": \\"2020-07-07 12:00:00\\", \\"dateTo\\": \\"2020-08-11 12:00:00\\"}"}'
Тоесть был добавлен еще один бэк слэш, там где я экранировал двойные кавычки. Как это пофиксить?
Пример body, который должен улетать на сервер:
{
"organizationId" : "D688C80B-91B3-4829-AC26-43D7CDE8CD3D",
"eventsSettings" : "{
\"fromRevision\" : \"-1\",
\"dateFrom\" : \"2018-12-01 12:00:00\",
\"dateTo\" : \"2018-12-02 12:00:00\"
}"
}
Ответы (1 шт):
Автор решения: cauf
→ Ссылка
Для корректного формирования json-файлов нужно пользоваться функцией dumps модуля json
import json
import requests
js_data = {
"organizationId" : "D688C80B-91B3-4829-AC26-43D7CDE8CD3D",
"eventsSettings" : {
"fromRevision" : -1,
"dateFrom" : "2018-12-01 12:00:00",
"dateTo" : "2018-12-02 12:00:00"
}
}
json_str = json.dumps(js_data)
r = requests.post(f"https://iiko.biz:9900/api/0/events/eventsMetadata?access_token={token}&request_timeout={requestTimeout}", json= json_str)