Введение
JSON — это удобочитаемый текстовый формат данных. Он не зависит от языка и используется для обмена данными между приложениями.
В этой статье мы объясним, как анализировать данные JSON в Python.
Python JSON
Модуль json
, который позволяет кодировать и декодировать данные JSON, является частью стандартной библиотеки Python.
JSON — это строка, представляющая данные. Кодирование или сериализация означает преобразование объекта Python в строку JSON, которую можно сохранить в файле или передать по сети. Процесс обратного кодирования или десериализации, при котором строка JSON преобразуется в объект Python.
Ниже мы видим таблицу, показывающую объекты Python и их эквивалентное представление JSON:
Питон | JSON |
---|---|
диктовать | объект |
список, кортеж | множество |
ул | нить |
внутр., плав. | количество |
Истинный | истинный |
ЛОЖЬ | ЛОЖЬ |
Нет, это не так | нулевой |
Для работы с JSON просто импортируйте форму вверху файла:
import json
Кодировать JSON в Python
Модуль json
имеет два метода кодирования объектов Python в форматированные строки JSON: dump()
и dumps()
.
Метод dump()
отправляет вывод в файлоподобный объект. Требуются два позиционных аргумента: кодируемый объект и файлоподобный объект. Вот пример:
data = {
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
with open("file.json", "w") as file:
json.dump(data, file)
Если вы запустите скрипт, будет создан файл с именем file.json
со следующим содержимым:
{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}
Метод dumps()
работает как dump()
, но вместо отправки вывода в файлоподобный объект возвращает строку:
data = {
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
json.dumps(data)
'{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}'
Оба метода принимают одни и те же аргументы ключевого слова. Например, если вы анализируете или отлаживаете данные JSON, вы можете указать уровень отступа:
data = {
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
print(json.dumps(data, indent=2))
{
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
Декодировать JSON в Python
Чтобы преобразовать закодированные данные JSON в объекты Python, используйте методы load()
и load( loads()
.
Метод load()
считывает структуру JSON из файлового объекта и преобразует ее в объект Python.
Предположим, у нас есть следующий файл JSON:
[
{
"userId": 1,
"id": 1,
"title": "Meet with Lisa",
"completed": true
},
{
"userId": 1,
"id": 2,
"title": "Design a prototype",
"completed": false
}
]
Чтобы преобразовать данные JSON в представление Python, вы должны использовать что-то вроде этого:
import json
with open('file.json') as f:
data = json.load(f)
type(data)
JSON преобразуется в список Python, который вы можете использовать в своем коде:
<class 'list'>
Метод loads()
преобразует строку, содержащую документ JSON, в объект Python:
import json
json_str= '{"userId": "1", "id": "1", "title": "Meet with Lisa", "completed": "True"}'
print(json.loads(json_str))
Строка преобразуется в словарь Python:
{'userId': '1', 'id': '1', 'title': 'Meet with Lisa', 'completed': 'True'}
Вот более сложный пример, показывающий, как сделать запрос API и декодировать данные JSON:
import json
import requests
response = requests.get("https://jsonplaceholder.typicode.com/users")
users = json.loads(response.text)
print(users)
Вывод
В этом руководстве мы увидели, как кодировать и декодировать данные JSON в Python.