¿Por qué no puedo usar verdadero / falso / nulo en un objeto Python alimentado a json.dumps ()?

 import json raw_json = { 'a':'aa', 'b':'bb', 'c':'cc', 'd':true, 'e':false, 'f':null } json_dump = json.dumps(raw_json) json_load = json.loads(json_dump) 

¿Qué estoy haciendo mal / necesito hacer?

Además, vengo de un fondo de JavaScript, así que ha sido un dolor tratar de aprender las convenciones y los términos. ¿Cuáles son las ‘u’ que preceden a cada clave json en el enlace del otro hilo después de ‘d2’?

Puede incrustar su JSON en bruto en el código si lo hace en una cadena (que, si está utilizando buenas prácticas para leer datos de un disco o red, es lo que tendrá de todos modos):

 # similar to what you'd get from raw_json=open('in.json', 'r').read() raw_json = '''{ 'a':'aa', 'b':'bb', 'c':'cc', 'd':true, 'e':false, 'f':null }''' python_struct = json.loads(raw_json) json_again = json.dumps(raw_json) 

Como true , false y null están dentro de la cadena, el analizador no intenta leerlos como Python válido, por lo que json.loads() puede verlos como se escribieron originalmente.

En su variable JSON, raw_json , debe poner en mayúscula True y False . En Python, los valores booleanos están en mayúscula para verdadero y falso. Cuando lo serialice en JSON, estarán en una caja inferior. Además, None es el equivalente de Python de null .

Cuando realiza un volcado JSON, está tomando un diccionario de Python (que debe ser Python válido) y está generando una cadena que sigue el estándar JSON. La conversión cambia visualmente las casillas superior True, False y None en sus equivalentes JSON true, false y null.

Para responder por qué hay u s en las cadenas, que se refiere a las cadenas que son cadenas Unicode.

En Python, necesitas True , False y None .

 raw_json = { 'a':'aa', 'b':'bb', 'c':'cc', 'd': True, 'e': False, 'f': None }