В файле events.json лежит JSON-текст. Как корректно получить Python-объект из этого файла?

Aobj = json.dumps(open('events.json', 'r', encoding='utf-8')): dumps сериализует объект в строку
Bwith open('events.json', 'r', encoding='utf-8') as f: obj = json.loads(f.read()): читаем текст и парсим
Cobj = json.loads(open('events.json', 'r', encoding='utf-8')): loads ждёт строку, а не файловый объект
Dwith open('events.json', 'w', encoding='utf-8') as f: obj = json.loads(f.read()): открытие в w стирает файл
Правильный ответ. Сначала читаем текст из файла, затем разбираем его через json.loads().

Разбор

json.loads() ожидает строку с JSON-текстом. Поэтому открываем файл в режиме чтения r, забираем содержимое через f.read(), и только потом вызываем json.loads(...). Контекстный менеджер with гарантирует закрытие файла. Вариант с json.dumps неверен: эта функция, наоборот, превращает Python-объект в строку. Открытие в режиме w уничтожит исходный файл.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

Ещё вопросы по теме «Работа с файлами: JSON и CSV»