Работа с модулем JSON в Python
JSON в Python обозначает JavaScript Object Notation, который является широко используемым форматом данных для обмена данными в Интернете. JSON – идеальный формат для организации передачи данных между клиентом и сервером. Его синтаксис аналогичен языку программирования JavaScript.
Основная цель JSON – передавать данные между клиентом и веб-сервером. Это простой в освоении и наиболее эффективный способ обмена данными. Его можно использовать с различными языками программирования, такими как Python, Perl, Java и т. д.
JSON в основном поддерживает 6 типов данных в JavaScript:
JSON построен на двух структурах:
- Он хранит данные в парах имя / значение. Он рассматривается как объект, запись, словарь, хеш-таблица, список с ключами.
- Упорядоченный список значений рассматривается как массив, вектор, список или последовательность.
Представление данных JSON похоже на словарь Python. Ниже приведен пример данных JSON:
Работа с Python JSON
Python поддерживает стандартную библиотеку marshal и pickle module, а JSON API ведет себя аналогично этой библиотеке. Python изначально поддерживает функции JSON.
Кодирование данных JSON называется сериализацией. Сериализация – это метод, при котором данные преобразуются в последовательности байтов и передаются по сети. Десериализация – это процесс, обратный декодированию данных, преобразованных в формат JSON. Этот модуль включает в себя множество встроенных функций.
Давайте посмотрим на эти функции:
['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']
В этом разделе мы изучим следующие методы:
Сериализация JSON
Сериализация – это метод преобразования объектов Python в JSON. Иногда компьютеру требуется обработать большой объем информации, поэтому рекомендуется сохранить эту информацию в файле. Мы можем хранить данные JSON в файле с помощью функции JSON. Модуль json предоставляет методы dump() и dumps(), которые используются для преобразования объекта Python.
Объекты Python преобразуются в следующие объекты JSON. Список приведен ниже:
Объекты Python | JSON | |
---|---|---|
1. | Dict | Object |
2. | list, tuple | Array |
3. | Str | String |
4. | int, float | Number |
5. | True | true |
6. | False | false |
7. | None | null |
Функция dump()
Python предоставляет функцию dump() для передачи (кодирования) данных в формате JSON, осуществляет запись данных JSON в файл. Она принимает два позиционных аргумента: первый – это объект данных, который нужно сериализовать, а второй – файловый объект, в который должны быть записаны байты.
Рассмотрим простой пример сериализации:
Import json # Key:value mapping student = < "Name" : "Peter", "Roll_no" : "0090014", "Grade" : "A", "Age": 20, "Subject": ["Computer Graphics", "Discrete Mathematics", "Data Structure"] >with open("data.json","w") as write_file: json.dump(student,write_file)
В приведенной выше программе мы открыли файл с именем data.json в режиме записи. Мы использовали режим записи потому что если файл не существует, он будет создан. Метод json.dump() преобразует словарь в строку JSON.
Функция dumps()
Функция dumps() используется для хранения сериализованных данных в файле Python. Она принимает только один аргумент, который представляет собой данные Python для сериализации. Файловый аргумент не используется, потому что мы не записываем данные на диск. Рассмотрим следующий пример:
import json # Key:value mapping student = < "Name" : "Peter", "Roll_no" : "0090014", "Grade" : "A", "Age": 20 >b = json.dumps(student) print(b)
JSON поддерживает примитивные типы данных, такие как строки и числа, а также вложенные списки, кортежи и объекты.
import json #Python list conversion to JSON Array print(json.dumps(['Welcome', "to", "javaTpoint"])) #Python tuple conversion to JSON Array print(json.dumps(("Welcome", "to", "javaTpoint"))) # Python string conversion to JSON String print(json.dumps("Hello")) # Python int conversion to JSON Number print(json.dumps(1234)) # Python float conversion to JSON Number print(json.dumps(23.572)) # Boolean conversion to their respective values print(json.dumps(True)) print(json.dumps(False)) # None value to null print(json.dumps(None))
["Welcome", "to", "javaTpoint"] ["Welcome", "to", "javaTpoint"] "Hello" 1234 23.572 true false null
Десериализация JSON
Десериализация – это процесс декодирования данных JSON в объекты Python. Модуль json предоставляет два метода load() и loads(), которые используются для преобразования данных JSON в фактическую объектную форму Python. Список приведен ниже:
JSON | Python | |
---|---|---|
1. | Object | Dict |
2. | Array | list |
3. | String | str |
4. | Number (int) | int |
5. | true | True |
6. | false | False |
7. | null | None |
В приведенной выше таблице показано обратное преобразование сериализованной таблицы, но технически это не идеальное преобразование данных JSON. Это означает, что если мы кодируем объект и снова декодируем его через некоторое время; мы не можем вернуть тот же объект.
Давайте возьмем реальный пример: один человек переводит что-то на китайский язык, а другой переводит обратно на английский, и это может быть неточно переведено. Рассмотрим простой пример:
import json a = (10,20,30,40,50,60,70) print(type(a)) b = json.dumps(a) print(type(json.loads(b)))
Функция load()
Функция load() используется для десериализации данных JSON в объект Python из файла. Рассмотрим следующий пример:
import json # Key:value mapping student = < "Name" : "Peter", "Roll_no" : "0090014", "Grade" : "A", "Age": 20, >with open("data.json","w") as write_file: json.dump(student,write_file) with open("data.json", "r") as read_file: b = json.load(read_file) print(b)
В приведенной выше программе мы закодировали объект Python в файле с помощью функции dump(). После этого мы читаем файл JSON с помощью функции load(), где в качестве аргумента мы передали read_file.
Модуль json также предоставляет функцию loads(), которая используется для преобразования данных JSON в объект Python. Она очень похожа на функцию load(). Рассмотрим следующий пример:
Import json a = ["Mathew","Peter",(10,32.9,80),] # Python object into JSON b = json.dumps(a) # JSON into Python Object c = json.loads(b) print(c)
Сравнение json.load() и json.loads()
Функция json.load() используется для загрузки файла JSON, тогда как функция json.loads() используется для загрузки строки.
Сравнение json.dump() и json.dumps()
Функция json.dump() используется, когда мы хотим сериализовать объекты Python в файл JSON, а функция json.dumps() используется для преобразования данных JSON в виде строки для анализа и печати.
Python Pretty Print JSON
Иногда нам нужно проанализировать и отладить большой объем данных JSON. Это можно сделать, передав дополнительные аргументы indent и sort_keys в методы json.dumps() и json.dump().
Примечание: обе функции dump() и dumps() принимают аргументы indent и short_keys.
Рассмотрим следующий пример:
import json person = '' per_dict = json.loads(person) print(json.dumps(per_dict, indent = 5, sort_keys= True))
В приведенном выше коде мы предоставили 5 пробелов для аргумента отступа, а ключи отсортированы в порядке возрастания. Значение по умолчанию для отступа – Нет, а значение по умолчанию для sort_key – False.
Кодирование и декодирование
Кодирование – это метод преобразования текста или значений в зашифрованную форму. Зашифрованные данные может использовать только предпочтительный пользователь путем их декодирования. Кодирование также называется сериализацией, а декодирование также называется десериализацией. Кодирование и декодирование выполняются для формата JSON (объект). Python предоставляет популярный пакет для таких операций. Мы можем установить его в Windows с помощью следующей команды:
Кодирование – пакет demjson предоставляет функцию encode(), которая используется для преобразования объекта Python в строковое представление JSON. Синтаксис приведен ниже:
demjson.encode(self,obj,nest_level = 0)
1 – Кодирование с использованием пакета demjson:
import demjson a = [] print(demjson.encode(a))
2 – Декодирование. Модуль demjson предоставляет функцию decode(), которая используется для преобразования объекта JSON в тип формата Python. Синтаксис приведен ниже:
Import demjson a = "['Peter', 'Smith', 'Ricky', 'Hayden']" print(demjson.decode(a))
В этом руководстве мы узнали о Python JSON – наиболее эффективном способе передачи данных между клиентом и веб-сервером.