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. Конечно такой метод использовать в веб приложении и, тем более, в продакшене опасно, но вот для личных скриптов вполне может быть пригодится. Как минимум про это можно просто знать, мало ли что…