Сохранение данных 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
      ]
   }
]