Как читать JSON-файл в Python

Як читати JSON-файл у Python?

Привіт всім! Сьогодні ми спробуємо розібратися: що таке 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, яка окультурює видачу в таких випадках. У цьому випадку наш код виглядатиме так:

  1. import json #подключили библиотеку для работы с json
  2. from pprint import pprint #подключили Pprint для красоты выдачи текста
  3.  
  4. with open('personal.json', 'r', encoding='utf-8') as f: #открыли файл с данными
  5.     text = json.load(f) #загнали все, что получилось в переменную
  6.     pprint(text) #вывели результат на экран

В результаті видача виглядає так:

  1. {'personal': [{'name': 'Вася', 'salary': 5000},
  2.               {'name': 'Саша', 'salary': 6000},
  3.               {'name': 'Петя', 'salary': 9000},
  4.               {'name': 'Даша', 'salary': 10000},
  5.               {'name': 'Маша', 'salary': 11000}]}

А тепер виведемо дані у чистому вигляді – ім’я співробітника + зарплата. Тоді код виглядатиме так:

  1. import json #Подключили библиотеку
  2.  
  3. with open('personal.json', 'r', encoding='utf-8') as f: #открыли файл
  4.     text = json.load(f) #загнали все из файла в переменную
  5.     print(text) #вывели результат на экран
  6.  
  7. for txt in text['personal']: #создали цикл, который будет работать построчно
  8.     print(txt['name'], ':', txt['salary']) #и выводим на экран все, что в значении ключей name и salary

Власне … можна було б сказати, що все, на сьогодні вистачить, але на завершення розповім про те, як читати не файли json, а рядки. Наприклад, у нас буде json-рядок:
stroke = ‘{“food”: “banana”}’

Якщо спробуємо вивести її на екран, то отримаємо:
{“food”: “banana”} – що загалом доносить суть, але відповідає правилам 🙂 Для виведення json-рядка використовується функція loads. У вигляді коду це виглядає так:

  1. import json #подключаем библиотеку для работы с json
  2. stroke = '{"food": "banana"}' #json-строка
  3. stroke_s = json.loads(stroke) #загоняем в переменную результат чтения json-строки
  4. print(stroke_s) #выводим результат на экран

На цьому – все 🙂 Дякуємо за увагу! І так – як записувати в json-файл ми розберемося трохи пізніше 🙂
Є питання? Задавайте на пошту, або пишіть у Телеграм 🙂

UPD: відео приспіло 🙂