при вводе ensure_ascii=False выдаёт ошибку, headers и json_data заполнены, тут пусты для примера
headers = {}
json_data = {
}
response = requests.post('https://p2p.binance.com/bapi/c2c/v2/friendly/c2c/adv/search', headers=headers, json=json_data)
with open("BinUSD.json", "w") as file:
json.dump(response.json(), file, indent=4, ensure_ascii=False)
print(file)
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
1 вариант: указывать кодировку utf-8 при записи файла - это гарантирует, что любой юникодный символ как есть запишется в файл:
with open("BinUSD.json", "w", encoding="utf-8") as file:
json.dump(response.json(), file, indent=4, ensure_ascii=False)
2 вариант: брать из ответа поле content (ответ в байтовом виде), записывать в файл в бинарном режиме. В этом случае не нужно будет вообще заботиться о кодировках, это просто сохранит пришедшие с сервера данные как есть.
with open("BinUSD.json", "wb") as file:
file.write(response.content)
Это конечно не декодирует юникодные символы (в том числе кириллицу), если они исходно были в json в экранированном виде (как при конвертировании в json с параметром ensure_ascii=True), и не отформатирует json.
