Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 171

... "breakfast": {

... "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)