Введение JSON в Python :
Полная форма JSON — это обозначение объектов JavaScript. Это означает, что для хранения и передачи данных используется файл сценария (исполняемый файл), состоящий из текста на языке программирования. Python поддерживает JSON через встроенный пакет, называемый JSON. Чтобы использовать эту функцию, мы импортируем пакет JSON в скрипт Python. Текст в JSON выполняется с помощью строки в кавычках, которая содержит значение в сопоставлении ключ-значение в { }. Он похож на словарь на Python. JSON показывает API, аналогичный пользователям стандартных библиотечных модулей marshal и pickle, а Python изначально поддерживает функции JSON. например:
# Python program showing
# use of json package
import json
# {key:value mapping}
a ={"name":"John",
"age":31,
"Salary":25000}
# conversion to JSON done by dumps() function
b = json.dumps(a)
# printing the output
print(b)
Выход:
{"age": 31, "Salary": 25000, "name": "John"}
Как вы можете видеть, JSON поддерживает примитивные типы, такие как строки и числа, а также вложенные списки, кортежи и объекты
# Python program showing that
# json support different primitive
# types
import json
# list conversion to Array
print(json.dumps(['Welcome', "to", "ProgramBox"]))
# tuple conversion to Array
print(json.dumps(("Welcome", "to", "ProgramBox")))
# string conversion to String
print(json.dumps("Hi"))
# int conversion to Number
print(json.dumps(123))
# float conversion to 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", "GeeksforGeeks"]
["Welcome", "to", "GeeksforGeeks"]
"Hi"
123
23.572
true
false
null
Сериализация JSON :
Процесс кодирования JSON обычно называется сериализация. Этот термин относится к преобразованию данных в серию байтов (следовательно, последовательных) для хранения или передачи по сети. Для обработки потока данных в файле библиотека JSON в Python использует функцию dump() для преобразования объектов Python в соответствующий объект JSON, что упрощает запись данных в файлы. См. Следующую таблицу, приведенную ниже.
Объект Python | Объект JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, long, float | numbers |
True | true |
False | false |
None | null |
Пример сериализации :
Рассмотрим приведенный пример объекта Python.
var = {
"Subjects": {
"Maths":85,
"Physics":90
}
}
Используя контекстный менеджер Python, создайте файл с именем Sample.json и откройте его в режиме записи.
with open("Sample.json", "w") as p:
json.dump(var, p)
Здесь функция dump() принимает два аргумента: во-первых, объект данных, подлежащий сериализации, и, во-вторых, объект, в который он будет записан(байтовый формат).
Десериализация JSON :
Десериализация противоположна сериализации, т. е. преобразованию объектов JSON в соответствующие объекты Python. Для этого используется метод load (). Если вы использовали данные JSON из другой программы или получили их в строковом формате JSON, то их можно легко десериализовать с помощью функции load(), которая обычно используется для загрузки из строки, в противном случае корневой объект находится в списке или dict.
with open("Sample.json", "r") as read_it:
data = json.load(read_it)
Пример десериализации :
json_var ="""
{
"Country": {
"name": "INDIA",
"Languages_spoken": [
{
"names": ["Hindi", "English", "Bengali", "Telugu"]
}
]
}
}
"""
var = json.loads(json_var)
Кодирование и декодирование :
Кодирование определяется как преобразование текста или значений в зашифрованную форму, которую может использовать только желаемый пользователь путем ее декодирования. Здесь кодирование и декодирование выполняется для формата JSON (объекта). Кодирование также известно как Сериализация, а декодирование известно как Десериализация. В Python есть популярный пакет для этой операции. Этот пакет известен как Demjson. Чтобы установить его, выполните следующие действия.
Для Windows:
pip install demjson
Для Ubuntu:
sudo apt-get update sudo apt-get install python-demjson
Кодирование : Функция encode() используется для преобразования объекта python в строковое представление JSON.
Syntax: demjson.encode(self, obj, nest_level=0)
Пример 1:
Кодирование с использованием пакета demjson.
# storing marks of 3 subjects
var = [{"Math": 50, "physics":60, "Chemistry":70}]
print(demjson.encode(var))
Выход:
[{"Chemistry":70, "Math":50, "physics":60}]
Расшифровка: Функция decode() используется для преобразования объекта JSON в тип формата python.
Syntax : demjson.decode(self, obj)
Пример 2:
Декодирование с использованием пакета demjson
var = '{"a":0, "b":1, "c":2, "d":3, "e":4}'
text = demjson.decode(var)
Выход:
{'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4}
Пример 3:
Кодирование с использованием пакета iterencode
# Other Method of Encoding
json.JSONEncoder().encode({"foo": ["bar"]})
'{"foo": ["bar"]}'
# Using iterencode(object) to encode a given object.
for i in json.JSONEncoder().iterencode(bigobject):
mysocket.write(i)
Пример 4:
Кодирование и декодирование с использованием дампов() и нагрузок().
# To encode and decode operations
import json
var = {'age':31, 'height'= 6}
x = json.dumps(var)
y = json.loads(var)
print(x)
print(y)
# when performing from a file in disk
with open("any_file.json", "r") as readit:
x = json.load(readit)
print(x)
Использование командной строки
Библиотека JSON также может быть использована из командной строки для проверки и печати вашего JSON.
$ echo "{ \"name\": \"Monty\", \"age\": 45 }"
Поиск по JSON с помощью JMESpath
JMESpath — это язык запросов для JSON. Это позволяет вам легко получить необходимые данные из документа JSON. Если вы когда-либо раньше работали с JSON, вы, вероятно, знаете, что вложенное значение легко получить. Например, doc[“person”][“age”] предоставит вам вложенное значение возраста в документе.
Во-первых, установите jmespath :
$ pip3 install jmespath
Пример из реального мира :
Давайте рассмотрим реальный пример реализации JSON в python. Хорошим источником для практических целей является JSON_placeholder, он предоставляет отличный пакет запросов API, который мы будем использовать в нашем примере. Чтобы начать, выполните следующие простые шаги. Откройте Python IDE или CLI и создайте новый файл сценария, назовите его sample.py.
import requests
import json
# Now we have to request our JSON data through
# the API package
res = requests.get("https://jsonplaceholder.typicode.com / todos")
var = json.loads(res.text)
# To view your Json data, type var and hit enter
var
# Now our Goal is to find the User who have
# maximum completed their task !!
# i.e we would count the True value of a
# User in completed key.
# {
# "userId": 1,
# "id": 1,
# "title": "Hey",
# "completed": false, # we will count
# this for a user.
# }
# Note that there are multiple users with
# unique id, and their task have respective
# Boolean Values.
def find(todo):
check = todo["completed"]
max_var = todo["userId"] in users
return check and max_var
# To find the values.
Value = list(filter(find, todos))
# To write these value to your disk
with open("sample.json", "w") as data:
Value = list(filter(keep, todos))
json.dump(Value, data, indent = 2)
Чтобы узнать больше, кликните сюда