2010-05-12 13 views
68

Estoy tratando de enviar una solicitud GET a una URL que sé que devuelve datos en forma de JSON utilizando Python.¿Cómo solicito y proceso JSON con python?

Me gustaría saber cómo enviar esta solicitud al http://someurl/path/to/json, y cómo analizarla, preferiblemente a un dict de pitón.

+1

¿Puedo amablemente solicitarle que cambie su respuesta aceptada a la que usa las solicitudes? – webjunkie

+0

Claro, así es como lo haría hoy :) – sa125

Respuesta

95

para nada con las solicitudes a las direcciones URL es posible que desee echa un vistazo a requests. Para JSON en particular:

>>> import requests 
>>> r = requests.get('https://github.com/timeline.json') 
>>> r.json() 
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/... 
+1

ejecutándolo con '$ python GetJson.py' [no da ninguna respuesta] (https://github.com/iPrayag/pydown/blob/master/GetJson.py) pero lo mismo cuando se ejecuta uno por uno en Python CLI funciona bien. Cualquier error que cometí al ponerlo en '.py'? (ma noob en python) – prayagupd

+0

El problema que estoy teniendo con esto, es que los serializadores de DjangoRestFramework no aceptan esto como json válido, debido a la ' Prefijo antes de las teclas. –

+2

@PrayagUpd anterior, y probablemente lo haya descubierto, pero para cualquier otra persona que se lo pregunte: en un archivo '.py' necesita' imprimir (r.json()) 'para ver la respuesta. –

68

La biblioteca estándar de Python tiene json y urllib2 módulos.

import json 
import urllib2 

data = json.load(urllib2.urlopen('http://someurl/path/to/json')) 
+14

Esta es una vieja pregunta, pero quería unirme a webjunkie y señalar que en 2012 la biblioteca solicita: HTTP for Humans es una respuesta potencialmente preferible. http://docs.python-requests.org/en/latest/ –

+3

Definitivamente debe usar las solicitudes. – hughdbrown