Python JSON: читання, запис, синтаксичний аналіз JSON (з прикладами)

У цьому посібнику ви навчитеся аналізувати, читати та писати JSON на Python за допомогою прикладів. Крім того, ви навчитеся перетворювати JSON на дикт і досить друкувати його.

JSON ( J AVA S cript O ▪ Таблиця N otation) є популярним форматом даних , що використовуються для представлення структурованих даних. Зазвичай передача та отримання даних між сервером та веб-додатком у форматі JSON.

У Python JSON існує у вигляді рядка. Наприклад:

 p = '("name": "Bob", "languages": ("Python", "Java"))' 

Також часто зберігається об’єкт JSON у файлі.

Імпорт json модуля

Для роботи з JSON (рядок або файл, що містить об'єкт JSON), ви можете використовувати jsonмодуль Python . Вам потрібно імпортувати модуль, перш ніж ви зможете його використовувати.

 import json

Проаналізуйте JSON на Python

jsonМодуль дозволяє легко розібрати JSON рядки і файли , що містять об'єкт JSON.

Приклад 1: Python JSON для диктування

Ви можете проаналізувати рядок JSON за допомогою json.loads()методу. Метод повертає словник.

 import json person = '("name": "Bob", "languages": ("English", "Fench"))' person_dict = json.loads(person) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print( person_dict) # Output: ('English', 'French') print(person_dict('languages'))

Тут person - це рядок JSON, а person_dict - це словник.

Приклад 2: Python читає файл JSON

Ви можете використовувати json.load()метод для читання файлу, що містить об'єкт JSON.

Припустимо, у вас є файл із іменем, person.jsonякий містить об’єкт JSON.

  ("name": "Bob", "languages": ("English", "Fench") ) 

Ось як можна проаналізувати цей файл:

  import json with open('path_to_file/person.json') as f: data = json.load(f) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print(data) 

Тут ми використали open()функцію для читання файлу json. Потім файл аналізується за допомогою json.load()методу, який дає нам словник з іменем даних.

Якщо ви не знаєте, як читати та писати файли на Python, рекомендуємо перевірити введення / виведення файлів Python.

Перетворення Python у рядок JSON

Ви можете перетворити словник у рядок JSON за допомогою json.dumps()методу.

Приклад 3: Перетворення dict в JSON

  import json person_dict = ('name': 'Bob', 'age': 12, 'children': None ) person_json = json.dumps(person_dict) # Output: ("name": "Bob", "age": 12, "children": null) print(person_json) 

Ось таблиця, що показує об’єкти Python та їх еквівалентне перетворення в JSON.

Python Еквівалент JSON
dict об'єкт
list, tuple масив
str рядок
int, float,int номер
True правда
False помилковий
None нуль

Запис JSON у файл

Щоб записати JSON у файл на Python, ми можемо використовувати json.dump()метод.

Приклад 4: Запис JSON у файл

  import json person_dict = ("name": "Bob", "languages": ("English", "Fench"), "married": True, "age": 32 ) with open('person.txt', 'w') as json_file: json.dump(person_dict, json_file) 

У вищезазначеній програмі ми відкрили файл, названий person.txtу режимі письма за допомогою 'w'. Якщо файл ще не існує, він буде створений. Потім json.dump()перетворюється person_dictна рядок JSON, який буде збережено у person.txtфайлі.

Після запуску програми person.txtфайл буде створений. У файлі є наступний текст.

 ("name": "Bob", "languages": ("English", "Fench"), "married": true, "age": 32)

Python симпатичний принт JSON

Для аналізу та налагодження даних JSON нам може знадобитися роздрукувати їх у більш читаному форматі. Це можна зробити, передавши додаткові параметри indentі sort_keysдо json.dumps()та json.dump()методу.

Приклад 5: Python досить друкує JSON

  import json person_string = '("name": "Bob", "languages": "English", "numbers": (2, 1.6, null))' # Getting dictionary person_dict = json.loads(person_string) # Pretty Printing JSON string back print(json.dumps(person_dict, indent = 4, sort_keys=True)) 

Коли ви запускаєте програму, результат буде:

 ("languages": "English", "name": "Bob", "numbers": (2, 1.6, null)) 

У наведеній вище програмі ми використовували 4пробіли для відступу. І ключі сортуються за зростанням.

До речі, типовим значенням відступу є None. І за замовчуванням значення sort_keys - False.

Рекомендовані читання:

  • Python JSON до CSV і навпаки
  • Python XML до JSON і навпаки
  • Python simplejson

Цікаві статті...