Привет всем! Сегодня мы попробуем разобраться: что такое 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: видео подоспело 🙂
UPD: А вот тут доступен текст о том, как удалить запись из json-файла. Вдруг пригодится?