Eval JSON string in Python
Допустим есть некий JSON:
json_str = '{"someInt":42,"someTrue":true,"someNull": null,"someFalse":false,"someString":"Hello!","someFloat":3.14}'
Для работы с JSON в Python есть пакет json. Чтобы получить словарь из JSON строки мы можем поступить так:
import json
from pprint import pprint
pprint(json.loads(json_str))
Получаем:
{u'someFalse': False,
u'someFloat': 3.14,
u'someInt': 42,
u'someNull': None,
u'someString': u'Hello!',
u'someTrue': True}
Все просто. А что если можно получить словарь из JSON без вспомогательных библиотек? Вам не кажется что JSON по синтаксису очень похож на словарь в Python? А что если сделать eval строки?
pprint(eval(json_str))
И тут мы получаем ошибку:
NameError: name 'true' is not defined
Хм. А что если…
null = None
true = True
false = False
json_dict = eval(json_str)
pprint(json_dict)
Получаем:
{'someFalse': False,
'someFloat': 3.14,
'someInt': 42,
'someNull': None,
'someString': 'Hello!',
'someTrue': True}
И вуаля, у нас получился JSON. Конечно такой метод использовать в веб приложении и, тем более, в продакшене опасно, но вот для личных скриптов вполне может быть пригодится. Как минимум про это можно просто знать, мало ли что…