Come posso richiedere ed elaborare JSON con python?


91

Sto cercando di inviare una richiesta GET a un URL che so restituisce dati sotto forma di JSON utilizzando python.

Mi piacerebbe sapere come inviare questa richiesta http://someurl/path/to/jsone come analizzarla, preferibilmente a un dict di Python.


2
posso chiederti gentilmente di cambiare la tua risposta accettata con quella che utilizza le richieste?
webjunkie

Certo, è così che lo farei oggi :)
sa125

Risposte:


130

Per qualsiasi cosa con richieste a URL potresti voler controllare le richieste . Per JSON in particolare:

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

1
eseguirlo con $ python GetJson.py non dà alcuna risposta ma la stessa cosa quando viene eseguito uno per uno su Python CLI funziona bene. qualsiasi errore che ho fatto mentre lo inserivo in un .py? (ma noob in python)
prayagupd

1
Il problema che sto riscontrando con questo è che i serializzatori DjangoRestFramework non lo accettano come json valido, a causa del prefisso "u" prima delle chiavi.
wobbily_col

2
@PrayagUpd vecchio, e probabilmente l'hai scoperto, ma per chiunque altro se lo chieda: in un .pyfile è necessario print(r.json())vedere la risposta.
Antti Haapala

73

La libreria standard di Python ha jsone urllib2moduli.

import json
import urllib2

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

21
Questa è una vecchia domanda, ma volevo unirmi a webjunkie e sottolineare che nel 2012 la libreria Requests: HTTP for Humans è una risposta potenzialmente preferibile. docs.python-requests.org/en/latest
Peter Hanley,

6
Dovresti assolutamente usare le richieste.
hughdbrown

1
Ma questo è ancora utile se sei bloccato in un'organizzazione oscura che rende difficile caricare le librerie che non fanno parte della libreria standard
Thruston
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.