Справочник по функциям Python

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.

Смотрите также

Где изучить