Сохранение данных Python - модуль JSON
JSON означает JavaScript Object Notation. Это легкий формат обмена данными. Это независимый от языка и кроссплатформенный текстовый формат, поддерживаемый многими языками программирования. Этот формат используется для обмена данными между веб-сервером и клиентами.
Формат JSON похож на pickle. Однако сериализация pickle специфична для Python, тогда как формат JSON реализован во многих языках, поэтому стал универсальным стандартом. Функциональность и интерфейс модуля json в стандартной библиотеке Python аналогичны модулям pickle и marshal.
Как и в модуле pickle, модуль json также предоставляет dumps() и loads() функция для сериализации объекта Python в закодированную строку JSON, и dump() и load() функции записывают и читают сериализованные объекты Python в / из файла.
dumps() - Эта функция конвертирует объект в формат JSON.
loads() - Эта функция преобразует строку JSON обратно в объект Python.
Следующий пример демонстрирует базовое использование этих функций -
import json
data=['Rakesh',{'marks':(50,60,70)}]
s=json.dumps(data)
json.loads(s)
Функция dumps () может принимать необязательный аргумент sort_keys. По умолчанию это False. Если установлено значение True, ключи словаря отображаются в отсортированном порядке в строке JSON.
У функции dumps () есть еще один необязательный параметр, называемый indent, который принимает число в качестве значения. Он определяет длину каждого сегмента форматированного представления строки json, как при выводе на печать.
Модуль json также имеет объектно-ориентированный API, соответствующий вышеуказанным функциям. В модуле определены два класса - JSONEncoder и JSONDecoder.
JSONEncoder класс
Объект этого класса - кодировщик структур данных Python. Каждый тип данных Python преобразуется в соответствующий тип JSON, как показано в следующей таблице -
Python | JSON |
---|---|
Диктовать | объект |
список, кортеж | массив |
Ул. | строка |
Перечисления, производные от int, float, int и float | количество |
Правда | правда |
Ложь | ложный |
Никто | ноль |
Класс JSONEncoder создается конструктором JSONEncoder (). Следующие важные методы определены в классе кодировщика -
Sr.No. | Методы и описание |
---|---|
1 | encode() сериализует объект Python в формат JSON |
2 | iterencode() Кодирует объект и возвращает итератор, дающий закодированную форму каждого элемента в объекте. |
3 | indent Определяет уровень отступа закодированной строки |
4 | sort_keys имеет значение true или false, чтобы ключи отображались в отсортированном порядке или нет. |
5 | Check_circular если True, проверьте круговую ссылку в объекте типа контейнера |
В следующем примере кодируется объект списка Python.
e=json.JSONEncoder()
e.encode(data)
JSONDecoder класс
Объект этого класса помогает в декодировании строки json обратно в структуру данных Python. Основной метод в этом классе - decode (). Следующий пример кода извлекает объект списка Python из закодированной строки на предыдущем шаге.
d=json.JSONDecoder()
d.decode(s)
Модуль json определяет load() и dump() функции для записи данных JSON в файл, подобный объекту, который может быть файлом на диске или потоком байтов, и считывать данные обратно из них.
дамп ()
Эта функция записывает данные объекта Python в формате JSON в файл. Файл должен быть открыт в режиме 'w'.
import json
data=['Rakesh', {'marks': (50, 60, 70)}]
fp=open('json.txt','w')
json.dump(data,fp)
fp.close()
Этот код создаст json.txt в текущем каталоге. Он показывает содержимое следующим образом -
["Rakesh", {"marks": [50, 60, 70]}]
load ()
Эта функция загружает данные JSON из файла и возвращает из него объект Python. Файл должен быть открыт с разрешением на чтение (должен иметь режим «r»).
Example
fp=open('json.txt','r')
ret=json.load(fp)
print (ret)
fp.close()
Output
['Rakesh', {'marks': [50, 60, 70]}]
В json.tool Модуль также имеет интерфейс командной строки, который проверяет данные в файле и печатает объект JSON в довольно отформатированном виде.
C:\python37>python -m json.tool json.txt
[
"Rakesh",
{
"marks": [
50,
60,
70
]
}
]