json.dump
Записывает объект Python в открытый файл в формате JSON.
Python 3.13
json.dump(obj, fp, *, ensure_ascii=True, indent=None, sort_keys=False)Параметры
- objAny
- Объект для записи: словарь, список, кортеж, строка, число, bool или None.
- fpTextIO
- Файл, открытый на запись в текстовом режиме, например open('data.json', 'w', encoding='utf-8'), или io.StringIO.
- ensure_asciiboolнеобязательный
- Если False, кириллица и другие не-ASCII символы записываются как есть, а не кодами \uXXXX.
- indentint | str | Noneнеобязательный
- Отступ для вложенных элементов; если задан, JSON записывается на несколько строк.
- sort_keysboolнеобязательный
- Если True, ключи словарей сортируются.
Возвращаемое значение
Ничего (None) — JSON записывается в файл.
Примеры
Запись словаря в файл
Python 3.13
import json
data = {'name': 'Anna', 'langs': ['Python', 'SQL']}
with open('user.json', 'w', encoding='utf-8') as file:
json.dump(data, file)
with open('user.json', encoding='utf-8') as file:
print(file.read()){"name": "Anna", "langs": ["Python", "SQL"]}Кириллица и отступы в io.StringIO
Python 3.13
import io
import json
buffer = io.StringIO()
json.dump({'city': 'Москва'}, buffer, ensure_ascii=False, indent=2)
print(buffer.getvalue()){
"city": "Москва"
}Подробности
В отличие от json.dumps, не возвращает строку, а сразу пишет её в файл. Файл открывайте в режиме 'w' с encoding='utf-8', особенно вместе с ensure_ascii=False. Второй вызов для того же открытого файла допишет ещё один объект, и такой файл уже не прочитается через json.load.
