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
dump() запис закодованого рядка у файл
навантаження() Декодуйте рядок JSON
навантаження () Декодувати під час читання файлу JSON

Python в JSON (кодування)

JSON Бібліотека с Python виконує наступний переклад Python об’єктів в об’єкти JSON за замовчуванням

Python JSON
диктує Об'єкт
список масив
Unicode рядок
число – int, long число – внутр
плавати число – реальне
Правда Правда
Помилковий Помилковий
ніхто 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-файлу словника за допомогою тієї ж функції dump()

# 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 приклад.

Python Приклад кодування JSON

JSON до Python (розшифровка)

Декодування рядка JSON виконується за допомогою вбудованого методу json.loads() & json.load() бібліотеки JSON в Python. Тут таблиця перекладу показує приклад об’єктів JSON Python об'єкти які корисні для виконання декодування Python рядка JSON.

JSON Python
Об'єкт диктує
масив список
рядок Unicode
число – внутр число – int, long
число – реальне плавати
Правда Правда
Помилковий Помилковий
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'}

Python Приклад декодування JSON

Декодування файлу 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}}

Розбір файлу JSON в Python

Компактне кодування в 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
}

Формат коду JSON Приклад

Щоб краще зрозуміти це, змініть відступ на 40 і спостерігайте за результатом

Формат коду JSON Приклад

Замовлення коду JSON:

ключі_сортування атрибут в Python аргумент функції dumps сортує ключ у JSON у порядку зростання. Аргумент sort_keys є логічним атрибутом. Якщо це правда, сортування дозволено, інакше ні. Давайте розберемося з 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

Комплексний об’єкт складається з двох різних частин

  1. Реальна частина
  2. Уявна частина

Комплексне кодування об'єктів 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 структура даних.
  • iterencode(o) – Представлення рядка один за одним і кодування об’єкта 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(o) – Представляти 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 обробляє винятки, пов'язані з операцією декодування. і це підклас ValueError.
  • Виняток – json.JSONDecoderError(повідомлення, документ)
  • Параметри винятку:
    • msg – повідомлення про неформатовану помилку
    • doc – розібрані документи JSON
    • pos – початковий індекс документа, коли він не вдається
    • lineno – рядок no show відповідає поз
    • двокрапка – колонка не відповідає поз

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")

Бібліотека JSON в Python

Infinite і NaN Numbers in Python

Формат обміну даними JSON (RFC – запит на коментарі) не допускає Infinite або Nan Value, але немає обмежень у Python— Бібліотека JSON для виконання операцій Infinite і Nan Value. Якщо 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

Інтерфейс командного рядка з JSON

$ echo '{"name" : "Kings Authur" }' | python3 -m json.tool

вихід:

{
    "name": " Kings Authur "
}

Переваги JSON в Python

  • Легко повертатися між контейнером і значенням (JSON to 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 за допомогою файлу I/O Python
compact_obj = json.dumps(дані, роздільники=(',',':')) Стисніть об’єкт JSON, видаливши символ пробілу з об’єкта JSON за допомогою розділювача
formatted_obj = json.dumps(dic, indent=4, separators=(',', ': ')) Форматування коду JSON за допомогою Indent
sorted_string = json.dumps(x, indent=4, sort_keys=True) Сортування ключа об’єкта JSON в алфавітному порядку
complex_obj = json.dumps(4 + 5j, за замовчуванням=complex_encode) Python Складне кодування об'єктів у JSON
JSONEncoder().encode(colour_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 з десеріалізацією

Щоденний інформаційний бюлетень Guru99

Розпочніть свій день з останніх та найважливіших новин про штучний інтелект, які ви можете знайти просто зараз.