¿Cómo volcar un dict a un archivo JSON?
Tengo un dict como este:
sample = {'ObjectInterpolator': 1629, 'PointInterpolator': 1675, 'RectangleInterpolator': 2042}
No puedo entender cómo volcar el dict a un archivo JSON como se muestra a continuación:
{
"name": "interpolator",
"children": [
{"name": "ObjectInterpolator", "size": 1629},
{"name": "PointInterpolator", "size": 1675},
{"name": "RectangleInterpolator", "size": 2042}
]
}
¿Existe una forma pitónica de hacer esto?
Puedes adivinar que quiero generar un d3
mapa de árbol.
import json
with open('result.json', 'w') as fp:
json.dump(sample, fp)
Esta es una manera más fácil de hacerlo.
En la segunda línea de código, el archivo result.json
se crea y se abre como variable fp
.
¡En la tercera línea, su dictado sample
se escribe en result.json
!
Combine la respuesta de @mgilson y @gnibbler, encontré que lo que necesitaba era esto:
d = {
"name": "interpolator",
"children": [{
'name': key,
"size": value
} for key, value in sample.items()]
}
j = json.dumps(d, indent=4)
with open('sample.json', 'w') as f:
print >> f, j
De esta manera, obtuve un archivo json con una bonita impresión. Los trucos print >> f, j
se encuentran aquí:
http://www.anthonydebarros.com/2012/03/11/generate-json-from-sql-using-python/
d = {"name":"interpolator",
"children":[{'name':key,"size":value} for key,value in sample.items()]}
json_string = json.dumps(d)
Desde Python 3.7, el orden de los dictados se conserva https://docs.python.org/3.8/library/stdtypes.html#mapping-types-dict
Los diccionarios conservan el orden de inserción. Tenga en cuenta que la actualización de una clave no afecta el orden. Las claves agregadas después de la eliminación se insertan al final