JSON Python Parsing Una guía simple

JSON Python Parsing Una guía simple / Programación

JSON (significa “Notación de objetos de JavaScript”) es un formato basado en texto que facilita el intercambio de datos entre diversas aplicaciones. Por ejemplo, una aplicación escrita en C ++ Cómo corregir errores de tiempo de ejecución de Windows Visual C ++ Cómo corregir errores de tiempo de ejecución de Windows Visual C ++ Los errores de Visual C ++ son un problema común para los usuarios de Windows. ¿Pero sabes cómo arreglarlos? Leer más ejecutándose en Windows puede intercambiar fácilmente datos JSON con una aplicación escrita en python y ejecutándose en Linux. Su simplicidad y flexibilidad ha llevado a un uso generalizado en los últimos años, especialmente en preferencia a los formatos anteriores basados ​​en XML..

Hay bibliotecas y kits de herramientas disponibles para analizar y generar JSON desde casi cualquier idioma y entorno. Este artículo se concentra en los métodos y problemas que surgen del procesamiento de JSON utilizando python.

Algunas muestras JSON

La entidad JSON más común que encontrará es una objeto: un conjunto de asignaciones clave-valor en el formato que se muestra a continuación.

persona.json:

"firstName": "Alice", "lastName": "Hall", "age": 35 

Aquí es cómo puede representar una matriz de objetos. En esta representación, cada elemento de la matriz es un objeto. La siguiente es una muestra de salarios de los jugadores de béisbol..

sueldos.json:

["año": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "barkele01", "salario": 870000, "año": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "bedrost01", "salario": 550000] 

Por supuesto, también puedes representar una variedad de escalares. Se parece a esto:

["hola", "mundo", 35] 

Analizando JSON en Python

Python Cómo obtener Python y JavaScript para comunicarse mediante JSON Cómo obtener Python y JavaScript para comunicarse mediante JSON Hoy te mostraré cómo usar JSON para enviar datos desde JavaScript a Python. Cubriré cómo configurar un servidor web, junto con todo el código que necesita. Leer más proporciona la json Módulo que se puede usar tanto para analizar JSON como para generar JSON a partir de objetos y listas de python.

El siguiente fragmento de código muestra cómo abrir un archivo JSON y cargar los datos en una variable.

importar json con abrir ('sample.json', 'r') como fp: obj = json.load (fp) 

Cuando tiene una cadena que contiene los datos JSON, puede convertirla en un objeto (o lista) de python con lo siguiente:

obj = json.loads ("" "" firstName ":" Alice "," lastName ":" Hall "," age ": 35" "") 

Para analizar una URL JSON, puede crear un objeto URL utilizando urllib2 y use json.load () como antes.

importar urllib2, json url = urllib2.urlopen ('http://site.com/sample.json') obj = json.load (url) 

Errores de manejo

Cuando el JSON tiene errores, obtendrá un ValueError. Puede manejarlo y tomar medidas correctivas si es necesario..

try: obj = json.loads ("" "" firstName ":" Alice "," lastName: "Hall", "age": 35 "" ") excepto ValueError: print" error loading JSON "

Análisis de JSON desde la línea de comandos

A veces, es útil analizar JSON utilizando la línea de comandos de python, tal vez para verificar errores o para obtener una salida con sangría agradable.

cat glossary.json # prints "glossary": "GlossDiv": "GlossList": "GlossEntry": "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Un lenguaje de marcado meta, usado para crear lenguajes de marcado como DocBook.", "GlossSee": "marcado", "Acrónimo": "SGML", "GlossTerm": "Lenguaje de marcado generalizado estándar", "Abreviatura": "ISO 8879: 1986", "SortAs": "SGML", "ID": "SGML", "title": "S", "title": "example glosario" 

Para obtener una salida con sangría del archivo JSON anterior, puede hacer lo siguiente:

python -mjson.tool glossary.json # prints "glossary": "GlossDiv": "GlossList": "GlossEntry": "Abbrev": "ISO 8879: 1986", "Acronym": "SGML", "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Un lenguaje de marcado meta, usado para crear lenguajes de marcas como DocBook". , "GlossSee": "markup", "GlossTerm": "Lenguaje de marcado generalizado estándar", "ID": "SGML", "SortAs": "SGML", "title": "S", "title ":" ejemplo de glosario " 

Y aquí es cómo puede cargar el objeto JSON en python y extraer solo lo que necesita.

python -c 'import json; fp = abierto ("glossary.json", "r"); obj = json.load (fp); fp.close (); print obj ["glossary"] ["title"] '# imprime glosario de ejemplo

Accediendo a los datos

Una vez que haya cargado los datos JSON en una variable de python, puede acceder a los datos como lo haría con cualquier dict de python (o una lista, según sea el caso). Por ejemplo, a los datos JSON anteriores se puede acceder de la siguiente manera:

firstName = obj ["firstName"] lastName = obj ["Hall"] age = obj ["age"] 

Tipos de datos

Los tipos de datos se determinan automáticamente a partir de los datos. Tenga en cuenta que años se analiza como un número entero.

tipo de impresión (obj ["firstName"]), tipo (obj ["lastName"]), tipo (obj ["age"]) # imprime    

La siguiente tabla de conversión se usa para convertir de JSON a python.

Analizar JSON utilizando una clase personalizada

De forma predeterminada, un objeto JSON se analiza en un python dictado. A veces es posible que tenga la necesidad de crear automáticamente un objeto de su propia clase a partir de los datos JSON. Puedes hacerlo especificando un object_hook Función que maneja la conversión. El siguiente ejemplo muestra cómo.

Aquí hay una clase personalizada que representa a Persona.

clase Persona: def __init __ (self, firstName, lastName, age): self.firstName = firstName self.lastName = lastName self.age = age def __str __ (self): return '"firstName" = "0", "lastName" = "1", "age" = 2 '. format (self.firstName, self.lastName, self.age) 

Se crea una instancia de esta clase al pasar los argumentos requeridos de la siguiente manera:

persona = Persona ("Cristal", "Newell", 27) 

Para usar esta clase para crear instancias al analizar JSON, necesita un object_hook Función definida de la siguiente manera: La función recibe un pitón. dictado y devuelve un objeto de la clase correcta..

def obj_creator (d): persona de retorno (d ['firstName'], d ['lastName'], d ['age']) 

Ahora puedes usar este object_hook funciona cuando se invoca el analizador JSON.

con abierto ('sample.json', 'r') como fp: obj = json.load (fp, object_hook = obj_creator) print obj # prints "firstName" = "Alice", "lastName" = "Hall", " edad "= 35 

Ejemplos de uso de JSON

JSON es extremadamente popular hoy en día. Muchos sitios web y aplicaciones SaaS (software como servicio) ofrecen una salida JSON que puede ser consumida directamente por las aplicaciones. Algunos de los disponibles públicamente incluyen:

  • StackOverflow / StackExchange. Aquí hay una URL que devuelve una lista de preguntas en formato JSON..
  • GitHub ofrece una api de JSON en https://developer.github.com/v3/.
  • Y aquí está la API de Flickr: https://developer.yahoo.com/flickr/.

¿Está utilizando JSON para consumir o proporcionar servicios? ¿Y estás usando python en tu pila de tecnología? Explique en los comentarios a continuación..

Explorar más sobre: ​​Programación, Python.