Модуль JSON в Python
JSON расшифровывается как JavaScript Object Notation и представляет собой легковесный формат для хранения и передачи данных. JSON часто используется, когда данные отправляются с сервера на веб-страницу.
В Python есть встроенный модуль json, который позволяет нам работать с данными JSON.
import json
Типы данных JSON
Объект JSON похож на словарь Python, но имеет следующие отличия:
- Ключи JSON всегда являются строками (string).
- Строки всегда заключаются в двойные кавычки.
- Логическое значение JSON начинается со строчных букв.
nullявляется эквивалентом PythonNoneв JSON.
Типы данных, которые поддерживает JSON:
- String (Строка)
- Number (Число)
- boolean (Логическое значение)
- null
- Object (Объект)
- Array (Массив)
Пример:
{
"name": "Charles",
"age": 33,
"has_hair": false,
"hobbies": ["photography", "running"],
"appearance": {
"eyes": "brown",
"hair_color": null
}
}
Метод JSON loads()
С помощью метода json.loads вы можете разобрать (parse) объект JSON и преобразовать его в словарь Python:
import json
# Строка JSON для разбора
json_person = '{"name": "Charles", "age": 33, "has_hair": false, "hobbies": ["photography", "running"]}'
# Разбор строки JSON в словарь Python
python_person = json.loads(json_person)
python_person
{'name': 'Charles', 'age': 33, 'has_hair': False, 'hobbies': ['photography', 'running']}
type(python_person)
<class 'dict'>
# Доступ к значению словаря с помощью метода get
python_person.get("name")
'Charles'
Метод JSON dumps()
Обратный процесс. Метод dumps() преобразует объект Python в строку JSON:
import json
# Словарь Python для преобразования
python_person = {'name': 'Charles', 'age': 33, 'has_hair': False, 'hobbies': ['photography', 'running']}
# Преобразование объекта Python в строку JSON
json_person = json.dumps(python_person)
json_person
'{"name": "Charles", "age": 33, "has_hair": false, "hobbies": ["photography", "running"]}'
type(json_person)
<class 'str'>
Чтение и запись файлов JSON
Чтение файла JSON
import json
# Чтение файла JSON
with open("filename.json", "r") as f:
json_content = json.loads(f.read())
# Примечание: эта строка кажется избыточной - json_content уже разобран
json.loads(json_content)
{'name': 'Charles', 'age': 33, 'has_hair': False}
Запись файла JSON
import json
person = {'name': 'Charles', 'age': 33}
# Запись словаря Python в файл JSON
with open("filename.json", "w") as f:
f.write(json.dumps(person))