Introducción
JSON es un formato de datos basado en texto legible por humanos. Es independiente del idioma y se utiliza para el intercambio de datos entre aplicaciones.
En este artículo, explicaremos cómo analizar datos JSON en Python.
Python JSON
El json
que le permite codificar y decodificar datos JSON es parte de la biblioteca estándar de Python.
JSON es una cadena que representa los datos. Codificar o serializar significa transformar un objeto Python en una cadena JSON que se puede almacenar en un archivo o transmitir a través de la red. Proceso de deserialización o codificación inversa en el que una cadena JSON se transforma en un objeto Python.
A continuación, vemos una tabla que muestra los objetos de Python y su representación JSON equivalente:
Pitón | JSON |
---|---|
dictar | objeto |
lista, tupla | formación |
str | cuerda |
int, flotar | número |
Cierto | cierto |
Falso | falso |
No lo es | nulo |
Para trabajar con JSON, simplemente importe el formulario en la parte superior del archivo:
import json
Codificar un JSON en Python
El json
tiene dos métodos para codificar objetos Python en cadenas con formato JSON: dump()
y dumps()
.
El dump()
envía la salida a un objeto similar a un archivo. Se requieren dos argumentos posicionales: el objeto a codificar y el objeto similar a un archivo. Aquí hay un ejemplo:
data = {
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
with open("file.json", "w") as file:
json.dump(data, file)
Si ejecuta el script, se file.json
un archivo llamado file.json con el siguiente contenido:
{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}
El dumps()
funciona como dump()
pero en lugar de enviar la salida a un objeto similar a un archivo, devuelve una cadena:
data = {
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
json.dumps(data)
'{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}'
Ambos métodos toman los mismos argumentos de palabras clave. Por ejemplo, si está analizando o depurando datos JSON, es posible que desee especificar el nivel de sangría:
data = {
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
print(json.dumps(data, indent=2))
{
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
Decodificar un JSON en Python
Para transformar JSON codificado datos en objetos de Python, utilice la load()
y loads()
métodos.
El load()
lee la estructura JSON de un objeto similar a un archivo y lo transforma en un objeto Python.
Supongamos que tenemos el siguiente archivo JSON:
[
{
"userId": 1,
"id": 1,
"title": "Meet with Lisa",
"completed": true
},
{
"userId": 1,
"id": 2,
"title": "Design a prototype",
"completed": false
}
]
Para transformar datos JSON en una representación de Python, debe usar algo como esto:
import json
with open('file.json') as f:
data = json.load(f)
type(data)
El JSON se transforma en una lista de Python, que puede usar en su código:
<class 'list'>
El loads()
convierte una cadena que contiene un documento JSON en un objeto Python:
import json
json_str= '{"userId": "1", "id": "1", "title": "Meet with Lisa", "completed": "True"}'
print(json.loads(json_str))
La cadena se transforma en un diccionario de Python:
{'userId': '1', 'id': '1', 'title': 'Meet with Lisa', 'completed': 'True'}
A continuación, se muestra un ejemplo más avanzado que muestra cómo realizar una solicitud de API y decodificar datos JSON:
import json
import requests
response = requests.get("https://jsonplaceholder.typicode.com/users")
users = json.loads(response.text)
print(users)
Conclusión
En este tutorial hemos visto cómo codificar y decodificar datos JSON en Python.