Python JSON
JSON — это формат для сохранения данных и их передачи между системами.
Это обычный текст, использующий простую нотацию объектов.
JSON в Python
В Python есть встроенный пакет json для работы с данными JSON.
Пример
import json
Разбор JSON — преобразование из JSON в Python
Строку JSON можно разобрать с помощью метода json.loads().
В этом примере результатом будет словарь Python.
Пример
json.loads().
Строка JSON содержит имя (name), возраст (age) и город (city). Выведите значение возраста (age).
Вывод: полная программа на Python
import json
# немного JSON:
x = '{ "name":"John", "age":30, "city":"New York"}'
# разбираем x:
y = json.loads(x)
# результат — словарь Python:
print(y["age"])
Преобразование из Python в JSON
В обратном направлении метод json.dumps() превращает объект Python в строку JSON.
В строки JSON можно преобразовать следующие типы Python:
- dict
- list
- tuple
- string
- int
- float
- True
- False
- None
При преобразовании каждый объект Python становится своим эквивалентом в JSON:
- dict → Object
- list → Array
- tuple → Array
- str → String
- int → Number
- float → Number
- True → true
- False → false
- None → null
Пример
json.dumps().
Выведите полученную строку JSON.
Вывод: полная программа на Python
import json
# объект Python (словарь):
x = {
"name": "John",
"age": 30,
"city": "New York"
}
# преобразуем в JSON:
y = json.dumps(x)
# результат — строка JSON:
print(y)
Пример
json.dumps() для каждого из них и выведите результаты.
Вывод: полная программа на Python
import json
print(json.dumps({"name": "John", "age": 30}))
print(json.dumps(["apple", "bananas"]))
print(json.dumps(("apple", "bananas")))
print(json.dumps("hello"))
print(json.dumps(42))
print(json.dumps(31.76))
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))
Пример
json.dumps().
Вывод: полная программа на Python
import json
x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
print(json.dumps(x))
Форматирование результата
Строку JSON, выведенную выше, трудно читать: в ней нет отступов и переносов строк.
json.dumps() принимает параметры, которые делают вывод более удобочитаемым:
Разделители тоже можно настроить. По умолчанию они равны (", ", ": "): запятая и пробел между объектами, двоеточие и пробел между ключами и значениями:
Пример
indent, чтобы выбрать, на сколько пробелов смещается каждый уровень:json.dumps() с параметром indent, равным 4, чтобы отформатировать вывод JSON с отступами.
Вывод: полная программа на Python
import json
x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
print(json.dumps(x, indent=4))
Пример
separators:json.dumps() с indent=4 и собственными разделителями separators=(". ", " = "), чтобы изменить разделитель по умолчанию.
Вывод: полная программа на Python
import json
x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
print(json.dumps(x, indent=4, separators=(". ", " = ")))
Упорядочивание результата
Другие параметры json.dumps() управляют порядком ключей в выводе:
Пример
sort_keys, чтобы выбрать, будет ли вывод отсортирован:json.dumps() с indent=4 и sort_keys=True, чтобы отсортировать ключи в выводе JSON.
Вывод: полная программа на Python
import json
x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
print(json.dumps(x, indent=4, sort_keys=True))