Подтвердить что ты не робот

Является синтаксисом JSON строгим подмножеством синтаксиса Python?

JSON очень похож на синтаксис Python. Могут ли все объекты JSON напрямую преобразовываться в Python без ошибок?

Пример

Ниже приведен допустимый объект JSON:

// Valid JSON
{"foo":"bar"}

Этот объект будет напрямую переводить в словарь Python с ключом "foo" и значением "bar":

# Python
json_dict = eval('{"foo":"bar"}')
4b9b3361

Ответ 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-парсер все же лучше.