La syntaxe JSON est-elle un sous-ensemble strict de la syntaxe Python?

JSON est très similaire à la syntaxe Python. Tous les objets JSON peuvent-ils se convertir directement en Python sans erreur?

Exemple

Voici un objet JSON valide:

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

Cet objet se traduira directement en un dictionnaire Python avec la touche "foo" et la valeur "bar":

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

Non. En particulier, true , false et null ne sont pas Python, bien qu'ils aient des équivalents directs dans Python ( True , False et None respectivement).

 // Valid JSON {"sky_is_blue":true} 

Mais lorsqu'il est utilisé dans 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 

Cette question a déjà été répondu (et la réponse a accepté), mais j'aimerais souligner que le problème de true , false et null ne pas être Python peut être surmonté en utilisant le code suivant avant d'évaluer JSON:

 true = True false = False null = None 

Bien sûr, un analyseur JSON est encore meilleur.