Este documento explica cómo usar JSON con Python. JSON es un formato ligero de intercambio de datos que resulta sencillo de leer y escribir. En Python, se puede usar la biblioteca json para convertir datos JSON a objetos de Python como diccionarios y viceversa. También se puede codificar y decodificar datos entre archivos JSON y objetos de Python.
8. JSON, cuyo nombre corresponde a las siglas JavaScript Object
Notation o Notación de Objetos de JavaScript, es un formato ligero de
intercambio de datos, que resulta sencillo de leer y escribir para los
programadores y simple de interpretar y generar para las máquinas.
¿Qué es JSON?
{
'nombre':'juan',
'edad':22,
'estudios':['primario','secundario']
}
<persona>
<nombre>juan</nombre>
<edad>22</edad>
<estudios>
<estudio>primario</estudio>
<estudio>secundario</estudio>
</estudios>
</persona>
9. JSON es solo un formato de
datos.
Requiere usar comillas dobles
para las cadenas y los nombres
de propiedades.
Una coma o dos puntos mal
ubicados pueden producir que un
archivo JSON no funcione.
Puede tomar la forma de
cualquier tipo de datos que sea
válido para ser incluido en un
JSON.
Caracteristicas JSON
{
"departamento":8,
"nombredepto":"Ventas",
"director": "Juan Rodríguez",
"empleados":[
{
"nombre":"Pedro",
"apellido":"Fernández"
},{
"nombre":"Jacinto",
"apellido":"Benavente"
}
]
}
10. Valores JSON
Los tipos de valores que
podemos encontrar en Json son
los siguientes:
• Un número (entero o float)
• Un string (entre comillas
simples)
• Un booleano (true o false)
• Un array (entre corchetes [] )
• Un objeto (entre llaves {})
• Null
Persona='''{
"codigo":"1",
"Nombre":"Pepito",
"Apellido":"Perez",
"Edad":64,
"Telefono": null,
"empleado":true,
"SO":["Windows
10","Ubuntu","Android"]
}'''
11. Ventajas:
Es autodescriptivo y fácil de
entender.
Su sencillez le ha permitido
posicionarse como alternativa a
XML.
Es más rápido en cualquier
navegador.
Es más fácil de leer que XML.
Es más ligero (bytes) en las
transmisiones.
Se parsea más rápido.
Velocidad de procesamiento alta.
Caracteristicas JSON
Desventajas:
Algunos desarrolladores
encuentran su escueta notación
algo confusa.
No cuenta con una característica
que posee XML: extensibilidad.
No soporta grandes cargas, solo
datos comunes.
Para la seguridad requiere de
mecanismos externos como
expresiones regulares.
12. De JSON a Python
Leer JSON significa convertir el
JSON en un valor de Python
(objeto). Como hemos
mencionado anteriormente, la
librería json parsea el JSON en
un diccionario o en una lista en
Python. Con el fin de hacer eso,
utilizamos la función loads(), de
la siguiente manera:
import json
jsonDatos = '{"nombre":
"Mario", "edad": 39}'
print(jsonDatos)
print(type(jsonDatos))
jsonAPython =
json.loads(jsonDatos)
print(jsonAPython)
print(type(jsonAPython))
13. De Python a JSON
En la sección anterior, hemos
visto cómo convertir JSON en
un valor de Python (es decir, en
un diccionario). En esta sección,
se muestra cómo convertir
(codificar) un valor de Python a
JSON.
import json
pythonDiccionario =
{'nombre':'Maria', 'edad':44,
'empleado':True}
diccionarioAJson =
json.dumps(pythonDiccionario)
print(diccionarioAJson)
print(type(diccionarioAJson))
14. Codificar y decodificar
en archivos
Además, el módulo json provee
las funciones dump y load,
similares a dumps y loads pero
que operan con archivos. Por
ejemplo, podemos almacenar
una lista de Python en un
archivo con el formato JSON:
import json
datos = [True, False, None, 'Hola,
mundo!']
with open("datos.json", "w") as f:
json.dump(datos, f)
with open("datos.json") as f:
datos = json.load(f)
# Imprime [True, False, None, 'Hola,
mundo!'].
print(datos)
15. Ejemplo con JSON
import json
personas='''
{
"persona": [{
"emp_nombre": "Peter Parker",
"emp_cedula": "88345678",
"emp_correo": ["peterparker@spideman.com"],
"licencia": "false"
}]}'''
datos=json.loads(personas)
print(type(datos['persona']))
for individuo in datos['persona']:
print(individuo['emp_nombre'],individuo['emp_correo'])
for individuo in datos['persona']:
del individuo['emp_cedula']
nueva_cadena=json.dumps(datos)
print(nueva_cadena)
16. "La mayor mejora de todas en
términos de desempeño es
cuando un sistema pasa de no
funcionar a funcionar.”
John Ousterhout