json.dumps красиво распечатать в Python
Introduction | |
Спецификация | |
JSON | |
Словарь | |
json.dumps + json.loads | |
Вложенные объекты | |
Статьи про Python |
Introduction
Если нужно вывести в консоль словарь или json это можно сделать с помощью json.dumps
Спецификация json.dumps
Если вы хотите сразу же изучить полученный json можно воспользоваться методом dumps()
json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw) Serialize obj to a JSON formatted str using this conversion table. The arguments have the same meaning as in dump(). Note Keys in key/value pairs of JSON are always of the type str. When a dictionary is converted into JSON, all the keys of the dictionary are coerced to strings. As a result of this, if a dictionary is converted into JSON and then back into a dictionary, the dictionary may not equal the original one. That is, loads(dumps(x)) != x if x has non-string keys.
JSON
Если нужно распечатать JSON
import json
print(json.dumps(response.json(), indent=4))
Словарь
Если нужно распечатать не JSON а словарь, json.dumps нужно использовать так:
import json
print(json.dumps(resp.dict, indent=4))
# Если нужно отсортировать словарь
print(json.dumps(resp.dict, indent=4, sort_keys=True))
json.dumps + json.loads
Часто приходится использовать связку json.dumps + json.loads
import json
response_json = json.loads(response.text)
print(json.dumps(response_json, indent=4))
Обратиться ко вложенному объекту
Предположим, приходит следующий json
{ "address": { "version": 1, "date": "2021-Aug-11", "cities": [ { "id": "0", "name": "malaga", "place": { "id": "100", "name": "Форт", "status": "VISITED" } }, { "id": "1", "name": "benalmadena", "place": { "id": "150", "name": "Парк Палома", "status": "VISITED" } } ] } }
Из него нам интересен только статус городов: посещён или не посещён.
Нужно обратиться ко вложенным в json объектам
import json
data_set = {
"address": {
"version": 1,
"date": "2024-Oct-05",
"cities": [
{
"id": "0",
"name": "malaga",
"place": {
"id": "100",
"name": "Форт",
"status": "VISITED"
}
},
{
"id": "1",
"name": "benalmadena",
"place": {
"id": "150",
"name": "Парк Палома",
"status": "VISITED"
}
}
]
}
}
json_dump = json.dumps(data_set)
response_json = json.loads(json_dump)
cities = response_json["address"]["cities"]
for city in cities:
print(city["place"]["status"])
VISITED
VISITED