... "hours": "7-11",
... "items": {
... "breakfast burritos": "$6.00",
... "pancakes": "$4.00"
... }
... },
... "lunch" : {
... "hours": "11-3",
... "items": {
... "hamburger": "$5.00"
... }
... },
... "dinner": {
... "hours": "3-10",
... "items": {
... "spaghetti": "$8.00"
... }
... }
... }
.
Далее закодируем структуру данных (menu) в строку JSON (menu_json) с помощью
функции dumps():
>>> import json
>>> menu_json = json.dumps(menu)
>>> menu_json
'{"dinner": {"items": {"spaghetti": "$8.00"}, "hours": "3-10"},
"lunch": {"items": {"hamburger": "$5.00"}, "hours": "11-3"},
"breakfast": {"items": {"breakfast burritos": "$6.00", "pancakes":
"$4.00"}, "hours": "7-11"}}'
А теперь превратим строку JSON menu_json обратно в структуру данных (menu2)
с помощью функции loads():
>>> menu2 = json.loads(menu_json)
>>> menu2
{'breakfast': {'items': {'breakfast burritos': '$6.00', 'pancakes':
'$4.00'}, 'hours': '7-11'}, 'lunch': {'items': {'hamburger': '$5.00'},
'hours': '11-3'}, 'dinner': {'items': {'spaghetti': '$8.00'}, 'hours': '3-10'}}
Структурированные текстовые файлы
225
menu и menu2 являются словарями с одинаковыми ключами и значениями. Как
всегда, в случае обычных словарей порядок, в котором вы получаете ключи, раз-
личается.
Вы можете получить исключение, пытаясь закодировать или декодировать не-
которые объекты, включая такие объекты, как datetime (этот вопрос детально рас-
сматривается в разделе «Календари и часы» главы 10), как показано здесь:
>>> import datetime
>>> now = datetime.datetime.utcnow()
>>> now
datetime.datetime(2013, 2, 22, 3, 49, 27, 483336)
>>> json.dumps(now)