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 json
módulo de Python . Necesita importar el módulo antes de poder usarlo.
import json
Analizar JSON en Python
El json
mó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.json
que 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.txt
en modo de escritura usando 'w'
. Si el archivo aún no existe, se creará. Luego, se json.dump()
transforma person_dict
en una cadena JSON que se guardará en el person.txt
archivo.
Cuando ejecute el programa, se person.txt
creará 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 indent
y sort_keys
a 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 4
espacios 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