Python JSON: кодировать (сбрасывать), декодировать (загружать) и читать файл JSON.
Что такое JSON в Python?
JSON in Python это стандартный формат, вдохновленный JavaСкрипт для обмена данными и передачи данных в текстовом формате по сети. Обычно JSON имеет строковый или текстовый формат. Он может использоваться API и базами данных и представляет объекты как пары имя/значение. JSON означает JavaОбозначение объекта скрипта.
Python Синтаксис JSON:
JSON записывается как пара ключ-значение.
{
"Key": "Value",
"Key": "Value",
}
JSON очень похож на Python Словарь. Python поддерживает JSON и имеет встроенную библиотеку JSON.
JSON-библиотека в Python
"маршал' а также 'соленый огурец' внешние модули Python поддерживать версию JSON Python библиотека. Работаем с JSON в Python для выполнения операций, связанных с JSON, таких как кодирование и декодирование, вам необходимо сначала Импортировать JSON и для этого в вашем .py файл,
import json
В JSON доступны следующие методы Python модуль
| Способ доставки | Описание |
|---|---|
| свалки() | кодирование в объекты JSON |
| свалка() | запись закодированной строки в файл |
| загружает() | Декодировать строку JSON |
| нагрузка() | Декодирование во время чтения файла JSON |
Python в JSON (кодирование)
JSON Библиотека Python выполняет следующий перевод Python объекты в объекты JSON по умолчанию
| Python | JSON |
|---|---|
| ДИКТ | объект |
| список | массив |
| юникода | строка |
| число – целое, длинное | число – целое |
| плавать | число – настоящее |
| Правда | Правда |
| Ложь | Ложь |
| Ничто | Значение Null |
преобразование Python Данные в JSON называется операцией кодирования. Кодирование осуществляется с помощью метода библиотеки JSON – свалки()
JSON dumps() в Python
json.dumps () in Python это метод, который преобразует словарные объекты Python в формат строковых данных JSON. Это полезно, когда объекты должны быть в строковом формате для таких операций, как парсинг, печать и т. д.
Теперь давайте выполним наш первый пример кодирования json.dumps с помощью Python:
import json
x = {
"name": "Ken",
"age": 45,
"married": True,
"children": ("Alice","Bob"),
"pets": ['Dog'],
"cars": [
{"model": "Audi A1", "mpg": 15.1},
{"model": "Zeep Compass", "mpg": 18.1}
]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
Вывод:
{"person": {"name": "Kenn", "sex": "male", "age": 28}})
Давайте посмотрим пример Python записать JSON в файл для создания JSON-файла словаря, используя ту же функцию свалка()
# here we create new data_file.json file with write mode using file i/o operation
with open('json_file.json', "w") as file_write:
# write json data into file
json.dump(person_data, file_write)
Вывод:
Ничего показывать... В вашей системе создан json_file.json. Вы можете проверить этот файл, как показано ниже, и записать JSON в файл. Python пример.
JSON в Python (Декодирование)
Декодирование строки JSON выполняется с помощью встроенного метода. json.loads () & json.load() библиотеки JSON в Python. Здесь таблица перевода показывает пример объектов JSON для Python объекты которые полезны для выполнения декодирования в Python строки JSON.
| JSON | Python |
|---|---|
| объект | ДИКТ |
| массив | список |
| строка | юникода |
| число – целое | число – целое, длинное |
| число – настоящее | плавать |
| Правда | Правда |
| Ложь | Ложь |
| Значение Null | Ничто |
Давайте посмотрим базовый анализ JSON. Python пример декодирования с помощью json.loads Функция,
import json # json library imported
# json data string
person_data = '{ "person": { "name": "Kenn", "sex": "male", "age": 28}}'
# Decoding or converting JSON format in dictionary using loads()
dict_obj = json.loads(person_data)
print(dict_obj)
# check type of dict_obj
print("Type of dict_obj", type(dict_obj))
# get human object details
print("Person......", dict_obj.get('person'))
Вывод:
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Type of dict_obj <class 'dict'>
Person...... {'name': 'John', 'sex': 'male'}
Декодирование файла JSON или анализ файла JSON в Python
Теперь мы научимся читать файл JSON в Python с Python разобрать пример JSON:
ПРИМЕЧАНИЕ: Декодирование файла JSON — это операция, связанная с вводом/выводом файла (I/O). Файл JSON должен существовать в вашей системе в указанном вами месте, которое вы указываете в своей программе.
Python прочитать файл JSON. Пример:
import json
#File I/O Open function for read data from JSON File
with open('X:/json_file.json') as file_object:
# store file data in object
data = json.load(file_object)
print(data)
Здесь данные является объектом словаря Python как показано выше, прочитайте файл JSON. Python пример.
Вывод:
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Компактное кодирование в Python
Если вам нужно уменьшить размер файла JSON, вы можете использовать компактное кодирование в Python.
Пример,
import json
# Create a List that contains dictionary
lst = ['a', 'b', 'c',{'4': 5, '6': 7}]
# separator used for compact representation of JSON.
# Use of ',' to identify list items
# Use of ':' to identify key and value in dictionary
compact_obj = json.dumps(lst, separators=(',', ':'))
print(compact_obj)
Вывод:
'["a", "b", "c", {"4": 5, "6": 7}]'
** Here output of JSON is represented in a single line which is the most compact representation by removing the space character from compact_obj **
Форматировать код JSON (красиво)
- Цель состоит в том, чтобы написать хорошо отформатированный код, понятный человеку. С помощью красивой полиграфии любой сможет легко разобраться в коде.
Пример:
import json
dic = { 'a': 4, 'b': 5 }
''' To format the code use of indent and 4 shows number of space and use of separator is not necessary but standard way to write code of particular function. '''
formatted_obj = json.dumps(dic, indent=4, separators=(',', ': '))
print(formatted_obj)
Вывод:
{
"a" : 4,
"b" : 5
}
Чтобы лучше это понять, измените отступ на 40 и посмотрите результат:
Заказ JSON-кода:
сортировка_ключей атрибут в Python Аргумент функции dumps отсортирует ключ в JSON в порядке возрастания. Аргумент sort_keys — это логический атрибут. Когда он равен true, сортировка разрешена, в противном случае — нет. Давайте разберемся с Python строка в пример сортировки JSON.
Пример,
import json
x = {
"name": "Ken",
"age": 45,
"married": True,
"children": ("Alice", "Bob"),
"pets": [ 'Dog' ],
"cars": [
{"model": "Audi A1", "mpg": 15.1},
{"model": "Zeep Compass", "mpg": 18.1}
],
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
Вывод:
{
"age": 45,
"cars": [ {
"model": "Audi A1",
"mpg": 15.1
},
{
"model": "Zeep Compass",
"mpg": 18.1
}
],
"children": [ "Alice",
"Bob"
],
"married": true,
"name": "Ken",
"pets": [
"Dog"
]
}
Как вы можете заметить, возраст ключей, автомобили, дети и т. д. расположены в порядке возрастания.
Комплексное кодирование объектов Python
Сложный объект состоит из двух разных частей, которые
- Реальная часть
- Мнимая часть
Пример: 3 +2i
Прежде чем выполнять кодирование сложного объекта, необходимо проверить, является ли переменная сложной или нет. Вам нужно создать функцию, которая проверяет значение, хранящееся в переменной, с помощью метода экземпляра.
Давайте создадим специальную функцию для проверки того, является ли объект сложным или поддается кодированию.
import json
# create function to check instance is complex or not
def complex_encode(object):
# check using isinstance method
if isinstance(object, complex):
return [object.real, object.imag]
# raised error using exception handling if object is not complex
raise TypeError(repr(object) + " is not JSON serialized")
# perform json encoding by passing parameter
complex_obj = json.dumps(4 + 5j, default=complex_encode)
print(complex_obj)
Вывод:
'[4.0, 5.0]'
Сложное декодирование объектов JSON в Python
Для декодирования сложного объекта в JSON используйте параметр object_hook, который проверяет, содержит ли строка JSON сложный объект или нет. Давайте разберемся со строкой в JSON Python Пример,
import json
# function check JSON string contains complex object
def is_complex(objct):
if '__complex__' in objct:
return complex(objct['real'], objct['img'])
return objct
# use of json loads method with object_hook for check object complex or not
complex_object =json.loads('{"__complex__": true, "real": 4, "img": 5}', object_hook = is_complex)
#here we not passed complex object so it's convert into dictionary
simple_object =json.loads('{"real": 6, "img": 7}', object_hook = is_complex)
print("Complex_object......",complex_object)
print("Without_complex_object......",simple_object)
Вывод:
Complex_object...... (4+5j)
Without_complex_object...... {'real': 6, 'img': 7}
Обзор класса сериализации JSON JSONEncoder
Класс JSONEncoder используется для сериализации любых Python объект во время выполнения кодирования. Он содержит три различных метода кодирования:
- по умолчанию (о) – Реализован в подклассе и возвращает объект сериализации для o объект.
- кодировать (о) – То же, что и дампы JSON. Python метод возвращает строку JSON Python структура данных.
- итеренкод(о) – Представлять строки одну за другой и кодировать объект o.
С помощью метода encode() класса JSONEncoder мы также можем закодировать любой Python объект, как показано ниже Python Пример кодировщика JSON.
# import JSONEncoder class from json
from json.encoder import JSONEncoder
colour_dict = { "colour": ["red", "yellow", "green" ]}
# directly called encode method of JSON
JSONEncoder().encode(colour_dict)
Вывод:
'{"colour": ["red", "yellow", "green"]}'
Обзор класса десериализации JSON JSONDecoder
Класс JSONDecoder используется для десериализации любых Python объект во время выполнения декодирования. Он содержит три различных метода декодирования, которые
- по умолчанию (о) – Реализован в подклассе и возвращает десериализованный объект. o объект.
- декодировать (о) – То же, что и возврат метода json.loads(). Python структура данных строки или данных JSON.
- raw_decode (о) - Представлять Python словарь один за другим и декодируйте объект o.
С помощью метода decode() класса JSONDecoder мы также можем декодировать строку JSON, как показано ниже. Python Пример декодера JSON.
import json
# import JSONDecoder class from json
from json.decoder import JSONDecoder
colour_string = '{ "colour": ["red", "yellow"]}'
# directly called decode method of JSON
JSONDecoder().decode(colour_string)
Вывод:
{'colour': ['red', 'yellow']}
Декодирование данных JSON из URL: пример из реальной жизни
Мы получим данные CityBike NYC (система совместного использования велосипедов) по указанному URL-адресу (https://gbfs.citibikenyc.com/gbfs/2.3/gbfs.json) и преобразовать в словарный формат.
Python загрузить JSON из файла. Пример:
ПРИМЕЧАНИЕ. – Убедитесь, что библиотека запросов уже установлена на вашем компьютере. Python, Если нет, откройте Терминал или CMD и введите
- (Для Python 3 или выше) запросы на установку pip3
import json
import requests
# get JSON string data from CityBike NYC using web requests library
json_response= requests.get("https://gbfs.citibikenyc.com/gbfs/2.3/gbfs.json")
# check type of json_response object
print(type(json_response.text))
# load data in loads() function of json library
bike_dict = json.loads(json_response.text)
#check type of news_dict
print(type(bike_dict))
# now get stationBeanList key data from dict
print(bike_dict['stationBeanList'][0])
Вывод:
<class 'str'>
<class 'dict'>
{
'id': 487,
'stationName': 'E 20 St & FDR Drive',
'availableDocks': 24,
'totalDocks': 34,
'latitude': 40.73314259,
'longitude': -73.97573881,
'statusValue': 'In Service',
'statusKey': 1,
'availableBikes': 9,
'stAddress1': 'E 20 St & FDR Drive',
'stAddress2': '',
'city': '',
'postalCode': '',
'location': '',
'altitude': '',
'testStation': False,
'lastCommunicationTime': '2018-12-11 10:59:09 PM', 'landMark': ''
}
Исключения, связанные с библиотекой JSON в Python:
- Класс json.JSONDecoderError обрабатывает исключение, связанное с операцией декодирования. и это подкласс Ошибка значения.
- Исключение - json.JSONDecoderError(сообщение, документ)
- Параметры исключения:
- msg – неформатированное сообщение об ошибке.
- doc – анализ документов JSON
- pos – начальный индекс документа в случае сбоя
- lineno – отсутствие строки соответствует позиции
- двоеточие – номер столбца соответствует позиции
Python загрузить JSON из файла. Пример:
import json
#File I/O Open function for read data from JSON File
data = {} #Define Empty Dictionary Object
try:
with open('json_file_name.json') as file_object:
data = json.load(file_object)
except ValueError:
print("Bad JSON file format, Change JSON File")
Бесконечное и NaN Numbers in Python
Формат обмена данными JSON (RFC – запрос комментариев) не допускает бесконечных значений или значений Nan, но ограничений в этом отношении нет. Python- Библиотека JSON для выполнения операций, связанных со значениями Infinite и Nan. Если JSON получает тип данных INFINITE и Nan, то он преобразует его в литерал.
Пример,
import json
# pass float Infinite value
infinite_json = json.dumps(float('inf'))
# check infinite json type
print(infinite_json)
print(type(infinite_json))
json_nan = json.dumps(float('nan'))
print(json_nan)
# pass json_string as Infinity
infinite = json.loads('Infinity')
print(infinite)
# check type of Infinity
print(type(infinite))
Вывод:
Infinity <class 'str'> NaN inf <class 'float'>
Повторяющийся ключ в строке JSON
RFC указывает, что имя ключа должно быть уникальным в объекте JSON, но это не обязательно. Python Библиотека JSON не создает исключений для повторяющихся объектов в JSON. Он игнорирует все повторяющиеся пары ключ-значение и рассматривает только последнюю пару ключ-значение среди них.
- Пример,
import json
repeat_pair = '{"a": 1, "a": 2, "a": 3}'
json.loads(repeat_pair)
Вывод:
{'a': 3}
CLI (интерфейс командной строки) с JSON в Python
json.tool предоставляет интерфейс командной строки для проверки синтаксиса красивой печати JSON. Давайте посмотрим пример CLI
$ echo '{"name" : "Kings Authur" }' | python3 -m json.tool
Вывод:
{
"name": " Kings Authur "
}
Преимущества JSON в Python
- Легко переключаться между контейнером и значением (JSON в Python и Python в JSON)
- Читаемый человеком (довольно печатный) объект JSON
- Широко используется при обработке данных.
- Не имеет одинаковой структуры данных в одном файле.
Ограничения реализации JSON в Python
- В десериализаторе диапазона JSON и предсказании числа
- Максимальная длина строки JSON и массивов JSON и уровни вложенности объекта.
Python Шпаргалка по JSON
| Python JSON-функция | Описание |
|---|---|
| json.dumps(person_data) | Создать JSON-объект |
| json.dump(person_data, file_write) | Создайте файл JSON, используя файловый ввод-вывод Python |
| Compact_obj = json.dumps(данные, разделители=(',',':')) | Сжать объект JSON, удалив символ пробела из объекта JSON с помощью разделителя. |
| formatted_obj = json.dumps(dic, indent=4, separators=(',', ': ')) | Форматирование кода JSON с использованием отступа |
| sorted_string = json.dumps(x, indent=4, sort_keys=True) | Сортировка ключа объекта JSON в алфавитном порядке |
| complex_obj = json.dumps(4 + 5j, по умолчанию=complex_encode) | Python Кодирование сложных объектов в JSON |
| JSONEncoder().encode(color_dict) | Использование класса JSONEncoder для сериализации |
| json.loads(строка_данных) | Декодирование строки JSON в Python словарь с использованием функции json.loads() |
| json.loads('{“__complex__”: true, “real”: 4, “img”: 5}', object_hook = is_complex) | Декодирование сложного объекта JSON в Python |
| JSONDecoder().decode(color_string) | Использование декодирования JSON для Python с десериализацией |








