Является синтаксисом JSON строгим подмножеством синтаксиса Python?
JSON очень похож на синтаксис Python. Могут ли все объекты JSON напрямую преобразовываться в Python без ошибок?
Пример
Ниже приведен допустимый объект JSON:
// Valid JSON
{"foo":"bar"}
Этот объект будет напрямую переводить в словарь Python с ключом "foo" и значением "bar":
# Python
json_dict = eval('{"foo":"bar"}')
Ответы
Ответ 1
Нет. В частности, true
, false
и null
не являются Python, хотя они имеют прямые эквиваленты в Python (true
, false
и None
соответственно).
// Valid JSON
{"sky_is_blue":true}
Но при использовании в Python...
# Python
>>> json_dict = eval('{"sky_is_blue":true}')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'true' is not defined
Ответ 2
Этот вопрос уже ответил (и ответ принят), но я хотел бы указать, что проблему true
, false
и null
, не являющуюся Python, можно преодолеть, используя следующий код перед оценкой JSON:
true = True
false = False
null = None
Конечно, JSON-парсер все же лучше.