JSON es un formato popular para el intercambio de datos. Python se envía con un incorporado JSON módulo para analizar y trabajar con datos JSON. Y este tutorial le enseñará todo sobre cómo trabajar con JSON en Python.
Al final de este tutorial, habrás aprendido:
- los fundamentos de JSON,
- cómo analizar y crear cadenas JSON en Python, y
- cómo leer y escribir en archivos JSON en Python.
¡Empecemos!⏳
What is JSON?
JSON representa JavaScript Oobjeto Notación, y es una basado en texto formato para el intercambio de datos. Aunque JSON está inicialmente inspirado por objetos JavaScript, casi todos los lenguajes de programación son compatibles trabajando con JSON.
Si alguna vez ha trabajado con API o ha leído archivos de configuración, es probable que se haya topado con JSON.
📑 Envías y recibes datos en JSON al consultar las API. Y JSON también se usa ampliamente en la comunicación cliente-servidor en aplicaciones de software. Además, también puede usar JSON para el almacenamiento de datos de propósito general.
El formato de JSON es muy similar al de un diccionario de Python. Los diccionarios son poderosas estructuras de datos integradas en Python que almacenan datos en pares clave-valor.
Antes de continuar, aquí hay algunos puntos que vale la pena señalar:
- En Python, un objeto JSON se almacena como un diccionario.
- Una matriz en JSON se almacena como un Lista de Python.
- En JSON, los valores booleanos se denotan como
true
yfalse
. En Python, estos se convierten a los booleanosTrue
yFalse
.
Para obtener más detalles sobre los tipos de datos que se traducen de JSON a Python, lea los documentos aquí.
A este tenor, json
El módulo es parte de la biblioteca estándar de Python, no es necesario que lo instale. Puede importar a su directorio actual, así:
import json
How to Load a JSON String in Python
La sintaxis general para cargar una cadena JSON en Python es:
<dict_obj> = json.loads(<json_str>)
Aquí,
<dict_obj>
es el diccionario de Python en el que desea cargar la cadena JSON,<json_str>
es cualquier cadena JSON válida.
Esto carga el <json_str>
en el diccionario de Python <dict_obj>
.
Vamos a codificar un ejemplo. Aquí json_str
es una cadena JSON.
json_str = '''
{
"books": [
{
"title": "The Wind in the Willows",
"author": "Kenneth Grahame",
"year": "1908"
},
{
"title": "To the Lighthouse",
"author": "Virginia Woolf",
"year": "1927"
}
]
}
'''
Y el fragmento de código a continuación muestra cómo puede cargar la cadena JSON json_str
en un diccionario de Python usando el loads()
método. Puede utilizar el integrado type()
función para verificar que py_dict
es un diccionario de Python.
py_dict = json.loads(json_str)
type(py_dict)
# Output: dict
print(py_dict)
# Output
{'books': [{'title': 'The Wind in the Willows',
'author': 'Kenneth Grahame', 'year': '1908'},
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}
Como se muestra en el código anterior, todos los campos en la cadena JSON son pares clave-valor en py_dict
.
How to Create JSON Strings in Python
Supongamos que tiene un diccionario de Python. Entonces, ¿cómo se crea una cadena JSON a partir de ella?
Puedes hacerlo usando el dumps()
método con esta sintaxis:
<json_str> = json.dumps(<dict_obj>)
Aquí,
<dict_obj>
es el diccionario de Python desde el que le gustaría crear la cadena JSON,<json_str>
es la cadena JSON resultante.
Entonces el dumps()
volcados de método <dict_obj>
en una cadena JSON <json_str>
.
A nuestro diccionario Python existente py_dict
. agreguemos una nueva clave "movies"
. Puede hacerlo como se muestra en el siguiente fragmento de código:
py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]
Ahora, descarguemos el diccionario modificado en una nueva cadena JSON json_str2
usando el dumps()
método.
json_str2 = json.dumps(py_dict)
print(json_str2)
# Output
{"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"},
{"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}],
"movies": [{"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true}]}
Como puede ver en el ejemplo anterior, la cadena JSON de salida es difícil de leer sin el formato adecuado. Puedes usar el opcional parámetro indent
para agregar sangría.
Y puedes hacer esto configurando indent
a un número entero como 2, como se muestra a continuación:
json_str2 = json.dumps(py_dict, indent = 2)
print(json_str2)
# Output
{
"books": [
{
"title": "The Wind in the Willows",
"author": "Kenneth Grahame",
"year": "1908"
},
{
"title": "To the Lighthouse",
"author": "Virginia Woolf",
"year": "1927"
}
],
"movies": [
{
"title": "The Imitation Game",
"year": "2014",
"lang": "en",
"watched": true
}
]
}
Observe cómo se ha formateado la salida con sangría, y es fácil de seguir.
Nota:: 💡 Si desea que las claves se clasifiquen en orden alfabético, puede configurar el
sort_keys
parámetro paraTrue
.
Como puede ver en el fragmento de código a continuación, las claves ahora se han ordenado en orden alfabético.
json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True)
print(json_str2)
# Output
{
"books": [
{
"author": "Kenneth Grahame",
"title": "The Wind in the Willows",
"year": "1908"
},
{
"author": "Virginia Woolf",
"title": "To the Lighthouse",
"year": "1927"
}
],
"movies": [
{
"lang": "en",
"title": "The Imitation Game",
"watched": true,
"year": "2014"
}
]
Y las claves ahora aparecen en orden alfabético: "author"
, "title"
y "year"
.
Hasta ahora, ha aprendido a trabajar con cadenas JSON en Python. En la siguiente sección, aprenderá a trabajar con archivos JSON.
How to Read a JSON File in Python
Leer un archivo JSON en Python, use la siguiente sintaxis:
json.load(<json-file>)
# where <json-file> is any valid JSON file.
Observe cómo usamos el
load()
método y no elloads()
método.loads()
carga un cadena JSON, mientrasload()
carga un Archivo JSON.
Debería considerar el uso de administradores de contexto cuando trabaje con archivos en Python. También puede intentar leer archivos de la siguiente manera, sin usar el administrador de contexto:
my_file = open('students.json','r')
contents = my_file.read()
print(contents)
file.close()
Si no cierra el archivo, puede haber un desperdicio potencial de recursos.
Sin embargo, al trabajar con gestores de contexto, los archivos se cierran automáticamente una vez que se completan las operaciones de archivo.
Y puede usar el administrador de contexto para leer archivos, como se muestra a continuación:
with open('students.json','r') as file:
data = json.load(file)
print(data)
# Output
{'students': [{'roll_num': 'cs27', 'name': 'Anna', 'course': 'CS'},
{'roll_num': 'ep30', 'name': 'Kate', 'course': 'PHY'}]}
Mientras lee de un archivo, especifique el modo como leer-indicado por 'r'
en el código anterior.
Nota:: Para navegar fácilmente por el directorio actual, asegúrese de que el archivo JSON esté en la misma carpeta que
main.py
, como se muestra en la imagen de abajo. Si su archivo JSON está en una carpeta diferente, asegúrese de especificar la ruta al archivo.

En la siguiente sección, aprenderá a escribir en un archivo JSON.✍
How to Write to a JSON File in Python
Para escribir en un archivo JSON existente o para crear un nuevo archivo JSON, use el dump()
método como se muestra:
json.dump(<dict_obj>,<json_file>)
# where <dict_obj> is a Python dictionary
# and <json_file> is the JSON file
Así que la sintaxis anterior vuelca el diccionario <dict_obj>
en el archivo JSON <json_file>
.
En la sección anterior, teníamos el diccionario py_dict
. Ahora vamos a volcar eso en un nuevo archivo JSON. Y vamos a nombrarlo new_file.json
.
Y la siguiente celda de código muestra cómo puede usar el dump()
función:
with open('new_file.json','w') as file:
json.dump(py_dict,file)
Nota:: Abrir un archivo en el escribir modo (
w
) sobrescribe el contenido si el archivo existe. Si el archivo no existe, se crea el archivo.
Después de ejecutar la celda de código anterior, verá que se ha creado un nuevo archivo JSON en el directorio de trabajo actual. Y puede continuar y examinar el contenido del archivo JSON.

Al escribir en archivos, el objetivo clave es el almacenamiento de datos. Y si desea conservar el formato, también puede utilizar el indent
y sort_keys
parámetros.
Conclusión
⏲ Es hora de un resumen rápido.
En este tutorial, has aprendido:
- los conceptos básicos del uso de JSON,
- cómo utilizar el
loads()
yload()
métodos para leer cadenas JSON y archivos JSON respectivamente, - cómo utilizar el
dumps()
ydump()
métodos para volcar diccionarios de Python en cadenas JSON y archivos JSON respectivamente.
Espero que hayas encontrado útil este tutorial. ¡Feliz aprendizaje!
También puede mirar Herramientas JSON para analizar, formatear y validar.