2013-07-30 2 views
1

Я хочу, чтобы иметь возможность декодировать формат, похожий на JSON, но может обрабатывать шестнадцатеричное содержимое. Назовем это JSHON. Пример содержания:Декодирование JSON-подобного объекта с использованием модуля json

{ 
    "nine": 9, 
    "ten": 0xA, 
    "eleven": 11 
} 

Легко ли уговорить the stdlib json module предоставить такую ​​возможность, или я должен использовать что-то другое.

ответ

3

Простое исправление будет использовать ast.literal_eval,

>>> data = ''' 
... { 
...  "nine": 9, 
...  "ten": 0xA, 
...  "eleven": 11 
... } 
... ''' 
>>> import ast 
>>> ast.literal_eval(data) 
{'eleven': 11, 'nine': 9, 'ten': 10} 
+0

Ничего себе, это намного проще, чем я надеялся :) – Tshepang

+1

Будьте осторожны, поскольку значения, такие как 'null' (которые декодер JSON интерпретирует как« Нет »), приведут к сбою ... – Ben

0

Согласно документации, demjson поддерживает это (в нестрогой режиме). Он пока не поддерживает Python 3, но пока это будет сделано.

+0

Спасибо Jon Clements для указания этого мне: http://chat.stackoverflow.com/transcript/6?m=11075790#11075790. – Tshepang

Смежные вопросы