
Mark Lucas
0
2934
263
JSON (significa “Notación de objeto 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 los errores de tiempo de ejecución de Windows Visual C ++ Cómo corregir los 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 solucionarlos? ejecutar en Windows puede intercambiar fácilmente datos JSON con una aplicación escrita en python y que se ejecuta en Linux. Su simplicidad y flexibilidad ha llevado a un uso generalizado en los últimos años, especialmente en preferencia a 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 usando Python.
Algunas muestras de JSON
La entidad JSON más común que encontrará es un objeto: un conjunto de asignaciones clave-valor en el formato que se muestra a continuación.
person.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 los salarios de los jugadores de béisbol..
salaries.json:
["año": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "barkele01", "salario": 870000, "año": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "bedrost01", "sueldo": 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 usando JSON Cómo obtener Python y JavaScript para comunicarse usando 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. proporciona el json módulo que se puede utilizar 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.
importe json con open ('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 usando urllib2 y use json.load () como antes.
import 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.
intente: obj = json.loads ("" "" firstName ":" Alice "," lastName: "Hall", "age": 35 "" ") excepto ValueError: print" error al cargar JSON "
Analizando JSON desde la línea de comando
A veces, es útil analizar JSON usando la línea de comando de python, tal vez para verificar errores u obtener resultados con sangría.
cat glossary.json # imprime "glossary": "GlossDiv": "GlossList": "GlossEntry": "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Un lenguaje de metamarcado, usado para crear lenguajes de marcado como DocBook". "ISO 8879: 1986", "SortAs": "SGML", "ID": "SGML", "title": "S", "title": "ejemplo de glosario"
Para obtener una salida con sangría del archivo JSON anterior, puede hacer lo siguiente:
python -mjson.tool glossary.json # imprime "glossary": "GlossDiv": "GlossList": "GlossEntry": "Abbrev": "ISO 8879: 1986", "Acrónimo": "SGML", "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Un lenguaje de meta-marcado, usado para crear lenguajes de marcado como DocBook". , "GlossSee": "marcado", "GlossTerm": "Lenguaje de marcado generalizado estándar", "ID": "SGML", "SortAs": "SGML", "title": "S", "title ":" ejemplo de glosario "
Y así es como 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 ejemplo de glosario
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 código de Python (o enumerar según sea el caso). Por ejemplo, se puede acceder a los datos JSON anteriores 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 entero.
tipo de impresión (obj ["nombre"]), tipo (obj ["apellido"]), tipo (obj ["edad"]) # imprime
La siguiente tabla de conversión se usa para convertir de JSON a Python.
Analizando JSON usando una clase personalizada
Por defecto, un objeto JSON se analiza en una pitón dict. A veces es posible que necesite crear automáticamente un objeto de su propia clase a partir de los datos JSON. Puede hacerlo especificando un gancho_objeto función que maneja la conversión. El siguiente ejemplo muestra cómo.
Aquí hay una clase personalizada que representa un 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 pasando los argumentos necesarios de la siguiente manera:
persona = Persona ("Cristal", "Newell", 27)
Para usar esta clase para crear instancias al analizar JSON, necesita un gancho_objeto función definida de la siguiente manera: la función recibe una pitón dict y devuelve un objeto de la clase correcta.
def obj_creator (d): return Person (d ['firstName'], d ['lastName'], d ['age'])
Ahora puedes usar esto gancho_objeto funciona al invocar 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 As A Service) ofrecen resultados JSON que pueden ser consumidos 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 JSON en https://developer.github.com/v3/.
- Y aquí está la API de Flickr: https://developer.yahoo.com/flickr/.
Si está buscando más ejemplos sobre cómo darle un buen uso, consulte esta guía para construir un bot de redes sociales usando Python.
¿Estás utilizando JSON para consumir o proporcionar servicios? ¿Y estás usando Python en tu pila de tecnología? Explica en los comentarios a continuación.