En este tutorial, aprenderá a analizar, leer y escribir JSON en Python con la ayuda de ejemplos. Además, aprenderá a convertir JSON a dict e imprimirlo con estilo.
JSON ( J ava S cript O bject N otation) es un formato de datos popular que se utiliza para representar datos estructurados. Es común transmitir y recibir datos entre un servidor y una aplicación web en formato JSON.
En Python, JSON existe como una cadena. Por ejemplo:
p = '("name": "Bob", "languages": ("Python", "Java"))'
También es común almacenar un objeto JSON en un archivo.
Importar módulo json
Para trabajar con JSON (cadena o archivo que contiene un objeto JSON), puede usar el jsonmódulo de Python . Necesita importar el módulo antes de poder usarlo.
import json
Analizar JSON en Python
El jsonmódulo facilita el análisis de cadenas JSON y archivos que contienen objetos JSON.
Ejemplo 1: Python JSON para dictar
Puede analizar una cadena JSON usando el json.loads()método. El método devuelve un diccionario.
import json person = '("name": "Bob", "languages": ("English", "Fench"))' person_dict = json.loads(person) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print( person_dict) # Output: ('English', 'French') print(person_dict('languages'))
Aquí, person es una cadena JSON y person_dict es un diccionario.
Ejemplo 2: Python lee un archivo JSON
Puede usar el json.load()método para leer un archivo que contiene un objeto JSON.
Supongamos que tiene un archivo llamado person.jsonque contiene un objeto JSON.
("name": "Bob", "languages": ("English", "Fench") )
Así es como puede analizar este archivo:
import json with open('path_to_file/person.json') as f: data = json.load(f) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print(data)
Aquí, hemos utilizado la open()función para leer el archivo json. Luego, el archivo se analiza usando el json.load()método que nos da un diccionario llamado datos.
Si no sabe cómo leer y escribir archivos en Python, le recomendamos que compruebe la E / S de archivos de Python.
Python Convertir a cadena JSON
Puede convertir un diccionario a una cadena JSON usando el json.dumps()método.
Ejemplo 3: convertir dict a JSON
import json person_dict = ('name': 'Bob', 'age': 12, 'children': None ) person_json = json.dumps(person_dict) # Output: ("name": "Bob", "age": 12, "children": null) print(person_json)
Aquí hay una tabla que muestra los objetos de Python y su conversión equivalente a JSON.
| Pitón | Equivalente JSON |
|---|---|
dict | objeto |
list, tuple | formación |
str | cuerda |
int, float,int | número |
True | cierto |
False | falso |
None | nulo |
Escribir JSON en un archivo
Para escribir JSON en un archivo en Python, podemos usar el json.dump()método.
Ejemplo 4: escribir JSON en un archivo
import json person_dict = ("name": "Bob", "languages": ("English", "Fench"), "married": True, "age": 32 ) with open('person.txt', 'w') as json_file: json.dump(person_dict, json_file)
En el programa anterior, hemos abierto un archivo llamado person.txten modo de escritura usando 'w'. Si el archivo aún no existe, se creará. Luego, se json.dump()transforma person_dicten una cadena JSON que se guardará en el person.txtarchivo.
Cuando ejecute el programa, se person.txtcreará el archivo. El archivo tiene el siguiente texto dentro.
("name": "Bob", "languages": ("English", "Fench"), "married": true, "age": 32)
JSON de impresión bonita de Python
Para analizar y depurar datos JSON, es posible que debamos imprimirlos en un formato más legible. Esto se puede hacer haciendo pasar parámetros adicionales indenty sort_keysa json.dumps()y json.dump()método.
Ejemplo 5: JSON de impresión bonita de Python
import json person_string = '("name": "Bob", "languages": "English", "numbers": (2, 1.6, null))' # Getting dictionary person_dict = json.loads(person_string) # Pretty Printing JSON string back print(json.dumps(person_dict, indent = 4, sort_keys=True))
Cuando ejecute el programa, la salida será:
("idiomas": "inglés", "nombre": "Bob", "números": (2, 1.6, nulo))
En el programa anterior, hemos utilizado 4espacios para la sangría. Y las claves están ordenadas en orden ascendente.
Por cierto, el valor predeterminado de sangría es None. Y el valor predeterminado de sort_keys es False.
Lecturas recomendadas:
- Python JSON a CSV y viceversa
- Python XML a JSON y viceversa
- Python simplejson








