Como solicito e processo JSON com python?

91

Estou tentando enviar uma solicitação GET para uma URL que sei que retorna dados na forma de JSON usando python.

Gostaria de saber como enviar esta solicitação http://someurl/path/to/jsone como analisá-la - de preferência para um dicionário python.

sa125
fonte
2
posso pedir-lhe que troque a sua resposta aceite pela de pedidos?
webjunkie
Claro, é assim que eu faria hoje :)
sa125

Respostas:

130

Para qualquer coisa com solicitações de URLs, você pode verificar as solicitações . Para JSON em particular:

>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...
webjunkie
fonte
1
executá-lo com $ python GetJson.py não dá nenhuma resposta, mas a mesma coisa quando executado um por um no python CLI funciona bem. qualquer erro que cometi ao colocá-lo em um .py? (ma noob em python)
prayagupd
1
O problema que estou tendo com isso é que os serializadores DjangoRestFramework não estão aceitando isso como json válido, devido ao prefixo 'u' antes das chaves.
wobbily_col
2
@PrayagUpd antigo, e você provavelmente o descobriu, mas para qualquer outra pessoa que esteja se perguntando sobre isso: em um .pyarquivo precisa print(r.json())ver a resposta.
Antti Haapala
73

A biblioteca padrão do Python tem módulos jsone urllib2.

import json
import urllib2

data = json.load(urllib2.urlopen('http://someurl/path/to/json'))
SilentGhost
fonte
21
Essa é uma pergunta antiga, mas eu queria me juntar ao webjunkie e apontar que em 2012 a biblioteca Requests: HTTP for Humans é uma resposta potencialmente preferível. docs.python-requests.org/en/latest
Peter Hanley
6
Definitivamente, você deve usar solicitações.
hughdbrown
1
Mas isso ainda é útil se você estiver preso em uma organização ignorante que torna difícil carregar bibliotecas que não fazem parte da biblioteca padrão
Thruston