Привіт всім! Сьогодні ми спробуємо розібратися: що таке 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: відео приспіло 🙂
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️