О JSON
JSON (JavaScript Object Notation) - это формат файла и стандарт хранения данных, в котором для хранения и обмена данными используются пары ключ-значение. Это наиболее широко используемый формат обмена данными, часто встречающийся в RESTful API, облегченных базах данных, файлах конфигурации и другом автономном или онлайн-программном обеспечении, которое должно хранить, извлекать и обмениваться данными. Большинство языков программирования включают библиотеки для анализа и записи данных JSON по умолчанию, а JSON - это формат данных, не зависящий от языка программирования. Значения, хранящиеся в файле JSON или полезной нагрузке, обычно содержат строки, числа и сериализуемые типы данных, такие как списки (массивы).
Словари JSON и Python
Данные JSON в Python преобразуются в объект словаря с помощью метода загрузки. Часто можно увидеть, что некоторые люди приравнивают данные json и словарь Python, поскольку синтаксис для их определения почти одинаков. Однако данные json - это не что иное, как текстовая строка, структурированная с жестким синтаксисом, а словарь python - это объект структуры данных, хранящийся в памяти. Если вы хотите сохранить данные словаря в текстовом файле или отправить их в другую программу, отличную от Python, вам придется сначала преобразовать их в текстовую строку (байты). Эта выгруженная / преобразованная текстовая строка определяется в стандартном синтаксисе JSON, а процесс преобразования словаря python в строку, совместимую с json, называется сериализацией.
Чтение и сброс данных JSON в Python
Данные JSON могут быть получены в виде ответа от сервера, считаны из файла, вырезаны из параметров запроса URL и т. Д. В этой статье основное внимание будет уделено чтению данных json из локально сохраненного файла. Предположим, что файл test.json содержит следующие данные:
{'codename': 'Eoan Ermine', 'version': 'Ubuntu 19.10'}
Чтобы прочитать файл test.json на python, вы можете использовать приведенный ниже код:
Импортироватьjson
с участием открытым ('test.json') в качествеf:
данныезнак равноjson.нагрузка(ж)
свалказнак равноjson.свалки(данные)
Распечатать (данные)
Распечатать (тип(данные))
Распечатать (свалка)
Распечатать (тип(свалка))
Первая строка в приведенном выше коде импортирует модуль json. В следующей строке с open используется для безопасного чтения содержимого файла. Внутри блока with open метод json.load используется для чтения и сохранения содержимого файла в переменной данных. Данные, загруженные на предыдущем шаге, преобразуются обратно в строку json с помощью метода json.dump. Выполнение приведенного выше кода приведет к следующему результату:
{'кодовое название':'Эоан Горностай', 'версия':'Ubuntu 19.10'}<класс 'дикт'>
{'кодовое название':'Эоан Горностай', 'версия':'Ubuntu 19.10'}
<класс 'str'>
Обратите внимание, что в приведенных выше выходных данных метод json.load считывает необработанные данные json в словарь Python, а методы json.dumps преобразуют словарь в строку, совместимую со структурой JSON. После преобразования объекта JSON в объект словаря Python вы можете использовать встроенные методы словаря Python для обработки данных. Приведенный выше пример довольно прост и не включает массивы в данные JSON или вложенные значения. Однако в Python вы можете обрабатывать эти значения, как любые другие вложенные словари и списки.
Сортировка и удобная печать данных JSON
Метод json.dump поддерживает некоторые необязательные параметры для сортировки ключей и красивой печати вывода для улучшения читаемости.
Импортироватьjsonс участием открытым ('test.json') в качествеf:
данныезнак равноjson.нагрузка(ж)
свалказнак равноjson.свалки(данные,sort_keysзнак равноПравда,отступзнак равно4)
Распечатать (свалка)
Приведенный выше код покажет следующий результат:
{'codename': 'Eoan Ermine',
'версия': 'Ubuntu 19.10'
}
Преобразования типов данных
В приведенном ниже списке показано, как значения JSON преобразуются в объекты Python и наоборот.
JSON | Python |
нить | п |
количество | int или float |
правда, ложь | Верно, неверно |
нулевой | Никто |
множество | список |
объект | диктовать |
Модуль командной строки Json.tool
Python включает удобную утилиту командной строки json.tool, которую можно использовать для проверки и красивой печати строк и файлов JSON.
$ echo'{' кодовое имя ':' Эоан Эрмин ',' версия ':' Ubuntu 19.10 '}'| python3 -m json.орудие трудаВыполнение приведенной выше команды покажет вам следующий результат:
{'codename': 'Eoan Ermine',
'версия': 'Ubuntu 19.10'
}
Вы также можете использовать json.tool с файлами JSON. Замените in_file и out_file в приведенной ниже команде желаемыми значениями:
$ python3 -m json.орудие трудаin_file out_fileКроме красивой печати, сортировки и проверки данных JSON, json.tool больше ничего не делает. Поэтому, если вы хотите манипулировать любыми данными JSON, вам нужно написать свой собственный код, используя встроенный модуль JSON.