Работаем с JSON в Python
Оригинал - https://telegra.ph/CHetvertyj-blok-10-14-4
Повторение:
JSON – это текстовый формат обмена данными. Значит информация, хранящаяся в формате JSON, представлена в виде текста или, другими словами, в виде строки
Процесс преобразования значения словаря в строку формата JSON называется сериализация
Процесс преобразования строки формата JSON в словарь называется десериализация
Первый метод это json.dumps(object, indent=2) - из питон объекта делает json строку
(Мы видим что был словарь, а получили json_str, также пропала запетая, потому что в json она в конце не ставится и изменения в clear, None стал null, появились значения юникода (русские буквы преобразовались к юникоду), ничего страшного нет при повторном обратном преобразовании они пропадут или прописать ensure_ascii=False, так-же сделана сортировка по ключам)
Эта таблица важна, так как если мы захотим перевести тип данных, который не поддерживает js то выдаст ошибку. Чтоб не писать свой класс для этого решения, лучше будет просто перевести в поддерживаемый тип данных
Второй метод из json_str сделать питон объект
Если мы копируем json_str на сайте или где-то еще, стоит поместить ее в строку в тройных кавычках
(Видим что это уже обычный словарик, тут важно следить за запетыми, снова повторю, в js не льзя в конце ставить запятую)
Если мы получаем ее из файла и хотим перевести в обычный объект, нужно открыть этот файл и все он уже открыт не как js а как словарь
Запись и чтение:
Когда нам нужно записать обычный питон объект в файл и сделать его json (не уже готовую json записывать):
Метод json.dump(наш файл, куда, отступы=3)
Используем контекстный менеджер + файл под расширением json и открыть его в режиме write (файлы json имеют расширение .json).
Обращаю внимание на то, что data это обычный словарь, а не JSON файл !!!
Он автоматически будет преобразован к JSON !!!
Но если у нас data это json строка, то переводим ее в обычный объект и тогда уже ее указываем (файл сохранится в json формате)
json.dump(new_str, open("test_name.json", "w", encoding="utf-8"), indent=3)Чтоб прочитать мы пользуемся:
Метод json.load(наш сохраненный файл)
Тут лишь фокус в том, что при чтении он сразу из js переводится в словарик
import json
with open("test_name.json", "r", encoding="utf-8") as file:
new = json.load(file)