Jak żądać i przetwarzać JSON w Pythonie?

91

Próbuję wysłać żądanie GET na adres URL, o którym wiem, że zwraca dane w postaci JSON za pomocą Pythona.

Chciałbym wiedzieć, jak wysłać to żądanie do http://someurl/path/to/jsoni jak je przeanalizować - najlepiej do dyktu w Pythonie.

sa125
źródło
2
czy mogę uprzejmie prosić o zmianę zaakceptowanej odpowiedzi na tę, która zawiera prośby?
webjunkie,
Jasne, tak bym to dzisiaj zrobił :)
sa125

Odpowiedzi:

130

W przypadku wszystkich żądań do adresów URL możesz chcieć sprawdzić żądania . W szczególności w przypadku formatu JSON:

>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...
webjunkie
źródło
1
uruchomienie go z $ python GetJson.py nie daje żadnej odpowiedzi, ale to samo, gdy jest uruchamiane jeden po drugim w Pythonie CLI działa dobrze. jakikolwiek błąd, który popełniłem podczas umieszczania go w .py? (ma noob w pythonie)
prayagupd
1
Problem, który mam z tym, polega na tym, że serializatory DjangoRestFramework nie akceptują tego jako prawidłowego json, z powodu prefiksu „u” przed kluczami.
wobbily_col
2
@PrayagUpd stary i prawdopodobnie się o tym dowiedziałeś, ale dla każdego, kto się nad tym zastanawiał: w .pypliku trzeba print(r.json())zobaczyć odpowiedź.
Antti Haapala
73

Standardowa biblioteka Pythona ma jsoni urllib2moduły.

import json
import urllib2

data = json.load(urllib2.urlopen('http://someurl/path/to/json'))
SilentGhost
źródło
21
To stare pytanie, ale chciałem dołączyć do webjunkie i wskazać, że w 2012 roku biblioteka Requests: HTTP for Humans jest potencjalnie preferowaną odpowiedzią. docs.python-requests.org/en/latest
Peter Hanley,
6
Zdecydowanie powinieneś używać próśb.
hughdbrown,
1
Ale jest to nadal przydatne, jeśli utkniesz w ciemnej organizacji, która utrudnia ładowanie bibliotek, które nie są częścią biblioteki standardowej
Thruston,