objeto limpiar libreria instalar ejemplo dumps dinamico dict create crear convertir python json

limpiar - Cómo decodificar JSON con Python



python json ejemplo (4)

Asumo que usted analizaría los datos en un diccionario y luego extraería los bits relevantes de él.

Puedes analizar json en python usando la json apropiada

Obtengo mi JSON de reddit.com, esencialmente algo como esto. He leído bastante, pero realmente no entiendo cómo puedo obtener la información que quiero de este JSON (quiero una lista de los enlaces de la historia). Entiendo que puedo "decodificar" el JSON en un diccionario, pero ¿debo recurrir en todo el JSON para obtener lo que necesito?

Gracias por adelantado.


Hay dos formas de "descodificar" json con Python, después de haberlo analizado en dados y listas con la biblioteca json.

Primero, accediendo a ella mediante índices, como este:

url_list = [t[''entries''][0][''url''] for t in data[''windows''][0][''tabs'']]

O bien, puede iterar sobre su estructura de árbol. La función de ejemplo a continuación no es de propósito general, solo ilustra que necesita considerar los tres tipos diferentes de "nodos" de JSON al analizar el árbol. El "valor" de una clave puede ser datos, una lista de nodos secundarios sin claves o un dict que es básicamente un nuevo objeto JSON. No puedes simplemente revisar cada nodo por su nombre, datos e hijos como lo harías con un árbol regular.

def depthFirstSearch(self, jsonobj, target, parentKey=None): if isinstance(jsonobj, dict): for key, value in jsonobj.items(): if isinstance(value, (dict, list)): self.depthFirstSearch(value, target, key) else: # "data" node if key == target and parentKey not in self.parentsToExclude: self.results.append(value) self.parents[parentKey] += 1 if isinstance(jsonobj, list): for value in jsonobj: #lists don''t have keys, pass along key from last dict self.depthFirstSearch(value, target, parentKey)


Si está utilizando Python 2.6 o posterior, use la biblioteca json incorporada. De lo contrario, use simplejson que tiene exactamente la misma interfaz.

Puede hacerlo de forma adaptativa sin tener que comprobar la versión de Python, utilizando un código como el siguiente:

try: import json except ImportError: import simplejson as json

Luego, use json.loads() o lo que sea apropiado.


import urllib2 import json u = urllib2.urlopen(''http://www.reddit.com/.json'') print json.load(u) u.close()