Привіт всім! Сьогодні ми спробуємо розібратися: що таке JSON та як читати JSON-файл у Python?
Для початку – небагато фактів:
– JSON розшифровується як JavaScript Object Notation
– Це формат обміну даними, в якому ви можете передавати дані з клієнта на сервер та з сервера на клієнт
– Він також використовується для зв’язку між програмами
– JSON надзвичайно важливий для розробки програм, особливо коли ви працюєте з API Rest
– Він заснований на підмножині Java Script
– Це легко читати та писати
З теорією познайомилися, а тепер дізнаємося про основні правила синтаксису при роботі з JSON-форматом:
JSON використовує пари ключ-значення – {“name”: “Вася”}
JSON використовує подвійні лапки навколо ключа
Зазвичай в навчальних закладах розповідають про колектив із даними із зарплати, місцем проживання і таке інше. Не порушуватимемо традицію, і уявимо колектив, що складається з 5 співробітників: Вася, Саша, Петя, Даша, Маша. Кожен співробітник отримує певну зарплату, а значить – ми можемо скласти свій JSON-файл (назвемо файл personal.json), який і буде список співробітників + їх зарплату:
{ "personal" : [ { "name" : "Вася" , "salary" : 5000 } , { "name" : "Саша" , "salary" : 6000 } , { "name" : "Петя" , "salary" : 9000 } , { "name" : "Даша" , "salary" : 10000 }, { "name" : "Маша" , "salary" : 11000 } ] }
як видно – поле name – відповідає за ім’я співробітника, а поле salary – за рівень зарплати, а ось сама назва цього масиву даних – personal (вказується в самому верху). Файл із даними у нас є, але як його читати? Для цього подивимося на код нижче:
import json #Підключаємо бібліотеку, що відповідає за роботу з JSON
with open(‘personal.json’, ‘r’, encoding=’utf-8′) as f: #відкриваємо файл personal.json і вказуємо його кодування – щоб можна було працювати з російськими літерами
text = json.load(f) #заганяємо у змінну все, що вийшло в результаті роботи бібліотеки
print(text) #виводимо результат на екран
Якщо ви запустите код – то отримаєте на екрані щось на зразок:
{‘personal’: [{‘name’: ‘Вася’, ‘salary’: 5000}, {‘name’: ‘Саша’, ‘salary’: 6000}, {‘name’: ‘Петя’, ‘salary’ : 9000}, {‘name’: ‘Даша’, ‘salary’: 10000}, {‘name’: ‘Маша’, ‘salary’: 11000}]}
Погодьтеся – читати та розбирати подібні дані вкрай складно. Для спрощення роботи в такому випадку часто використовують бібліотеку pprint, яка окультурює видачу в таких випадках. У цьому випадку наш код виглядатиме так:
-
import json #подключили библиотеку для работы с json
-
from pprint import pprint #подключили Pprint для красоты выдачи текста
-
-
with open('personal.json', 'r', encoding='utf-8') as f: #открыли файл с данными
-
text = json.load(f) #загнали все, что получилось в переменную
-
pprint(text) #вывели результат на экран
В результаті видача виглядає так:
-
{'personal': [{'name': 'Вася', 'salary': 5000},
-
{'name': 'Саша', 'salary': 6000},
-
{'name': 'Петя', 'salary': 9000},
-
{'name': 'Даша', 'salary': 10000},
-
{'name': 'Маша', 'salary': 11000}]}
А тепер виведемо дані у чистому вигляді – ім’я співробітника + зарплата. Тоді код виглядатиме так:
-
import json #Подключили библиотеку
-
-
with open('personal.json', 'r', encoding='utf-8') as f: #открыли файл
-
text = json.load(f) #загнали все из файла в переменную
-
print(text) #вывели результат на экран
-
-
for txt in text['personal']: #создали цикл, который будет работать построчно
-
print(txt['name'], ':', txt['salary']) #и выводим на экран все, что в значении ключей name и salary
Власне … можна було б сказати, що все, на сьогодні вистачить, але на завершення розповім про те, як читати не файли json, а рядки. Наприклад, у нас буде json-рядок:
stroke = ‘{“food”: “banana”}’
Якщо спробуємо вивести її на екран, то отримаємо:
{“food”: “banana”} – що загалом доносить суть, але відповідає правилам 🙂 Для виведення json-рядка використовується функція loads. У вигляді коду це виглядає так:
-
import json #подключаем библиотеку для работы с json
-
stroke = '{"food": "banana"}' #json-строка
-
stroke_s = json.loads(stroke) #загоняем в переменную результат чтения json-строки
-
print(stroke_s) #выводим результат на экран
На цьому – все 🙂 Дякуємо за увагу! І так – як записувати в json-файл ми розберемося трохи пізніше 🙂
Є питання? Задавайте на пошту, або пишіть у Телеграм 🙂
UPD: відео приспіло 🙂