Cómo usar Python para procesar datos JSON
Antes de presentar los métodos básicos del uso de Python para procesar datos JSON, primero debemos comprender qué es JSON.
JSON es la abreviatura de "Notación de objetos JavaScript" y puede describirse como "un formato de datos basado en símbolos del lenguaje JavaScript". Sin embargo, esta notación sólo se basa en JavaScript y se puede utilizar en otros idiomas.
JSON es una forma de almacenar e intercambiar datos, implementada a través de su sintaxis y utilizada en muchas aplicaciones web. La ventaja de JSON es que tiene un formato legible por humanos, lo que probablemente sea una de las razones por las que se utiliza en la transferencia de datos, además de que también es eficiente cuando se trabaja con API.
En JSON, los datos se representan en forma de pares de nombre/valor (nombre/valor); los objetos se almacenan entre llaves, cada nombre va seguido de un ":" (dos puntos), nombre/valor. Los pares están separados por (coma); las matrices están entre corchetes y los valores están separados por (coma).
Ejemplo de datos en formato JSON:
{
"book1":{
"title":"Python Principiantes", p> p>
"año": 2005,
"página": 399
},
" libro2":{
"title": "Desarrolladores de Python",
"año": 2006,
"página": 650
}
}} A continuación se presentará en detalle cómo procesar datos JSON en Python.
Python puede manejar fácilmente datos JSON. El módulo que implementa esto es el módulo json. Este módulo debe incluirse en la instalación de Python (integrado), por lo que no necesita instalar ningún módulo externo como lo hace con los archivos PDF y Excel. Para utilizar este módulo lo único que necesitas hacer es importarlo (escrito al principio):
importar json ¿Pero qué hace una biblioteca JSON? Esta biblioteca analiza principalmente JSON a partir de archivos o cadenas. También puede analizar JSON en un diccionario o lista en Python y viceversa, es decir, convertir un diccionario o lista de Python en una cadena JSON.
Leer JSON (Convertir JSON a Python)
Leer JSON significa convertir JSON a un valor (objeto) de Python. Como se mencionó anteriormente, la biblioteca json puede analizar JSON en un diccionario o lista en Python. Para hacer esto, usamos la función loads() (cargar desde una cadena) de la siguiente manera:
importar json
jsonData = '{"name":"Frank", "age " :39}'
jsonToPython = json.loads(jsonData) Para ver el resultado, ejecute print jsonToPython, en cuyo caso obtendrá el siguiente resultado:
{' age': 39, 'nombre': 'Frank'} Es decir, los datos se devolverán en forma de un diccionario de Python (estructura de datos de objeto JSON).
Python a JSON
En la sección anterior, introdujimos JSON a Python, en esta sección le mostraremos cómo convertir (codificar) valores de Python a JSON.
Supongamos que tenemos el siguiente diccionario en Python:
import json
pythonDictionary = {'name':'Bob','age':44,' isEmployed':True}
dictionaryToJson = json.dumps(pythonDictionary) Si ejecutamos print DictionaryToJson, obtendremos los siguientes datos JSON:
{"age": 44, "isEmployed " : true, "name": "Bob"} Por lo tanto, esta salida puede considerarse como la representación de datos del objeto (diccionario). El método dumps() es la clave para este tipo de operación.
Cabe señalar en este momento que JSON no puede almacenar todos los tipos de objetos de Python y solo puede almacenar los siguientes tipos: lista, diccionario, booleano, número, cadena, Ninguno. Por lo tanto, cualquier otro tipo deberá convertirse antes de almacenarse en JSON.
Supongamos que tenemos la siguiente clase:
clase Empleado(objeto):
def __init__(self, nombre):
self . nombre = nombre Supongamos que creamos un nuevo objeto abder de la siguiente manera:
abder = Empleado('Abder') ¿Qué pasa si queremos convertir este objeto a JSON? ¿Es json.dumps (abder)? En este caso, recibirá un error similar al siguiente:
Rastreo (llamada más reciente):
Archivo "test.py", línea 8, en
abderJson = json.dumps( abder)
Archivo "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2 . 7/json/__init__.py", línea 243, en volcados
devuelve _default_encoder.encode(obj)
archivo "/usr/local/Cellar/python/2.7. Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", línea 207, en codificación
chunks = self.iterencode(o, _one_shot=True)
Archivo "/usr/local/ Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", línea 270, en iterencode
return _ iterencode(o, 0)
Archivo "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.py", línea 184, por defecto
plantear TypeError(repr(o) + " no es serializable JSON")
TypeError: <__main__.Employee objeto en 0x10e74b750> no es serializable JSON ¿Pero hay alguna solución? Afortunadamente lo hay. Para resolver este problema, podemos definir un método como este:
def jsonDefault(object):
return object.__dict__ y luego codificar el objeto en JSON así:
jsonAbder = json.dumps(abder, default=jsonDefault) Si ejecuta print jsonAbder, debería obtener el siguiente resultado:
{"name":"abder"}Ahora tenemos objetos Python (abder) codificado como JSON.