Bagaimana cara meminta dan memproses JSON dengan python?


91

Saya mencoba mengirim permintaan GET ke URL yang saya tahu mengembalikan data dalam bentuk JSON menggunakan python.

Saya ingin tahu cara mengirim permintaan ini ke http://someurl/path/to/json, dan cara menguraikannya - sebaiknya ke dikt python.


2
bolehkah saya dengan ramah meminta Anda untuk mengganti jawaban yang diterima dengan yang menggunakan permintaan?
webjunkie

Tentu, begitulah cara saya melakukannya hari ini :)
sa125

Jawaban:


130

Untuk apa pun dengan permintaan ke URL, Anda mungkin ingin memeriksa permintaan . Khususnya untuk JSON:

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

1
menjalankannya dengan $ python GetJson.py tidak memberikan respons apa pun tetapi hal yang sama ketika dijalankan satu per satu di python CLI berfungsi dengan baik. kesalahan apa pun yang saya lakukan saat memasukkannya ke dalam .py? (ma noob di python)
prayagupd

1
Masalah yang saya hadapi dengan ini, adalah bahwa serializers DjangoRestFramework tidak menerima ini sebagai json yang valid, karena awalan 'u' sebelum kunci.
wobbily_col

2
@PrayagUpd yang lama, dan Anda mungkin menemukannya, tetapi bagi orang lain yang bertanya-tanya tentangnya: dalam sebuah .pyfile perlu print(r.json())melihat tanggapannya.
Antti Haapala

73

Pustaka standar Python memiliki jsondan urllib2modul.

import json
import urllib2

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

21
Ini adalah pertanyaan lama, tetapi saya ingin bergabung dengan webjunkie dan menunjukkan bahwa pada tahun 2012 perpustakaan Permintaan: HTTP untuk Manusia adalah jawaban yang berpotensi lebih disukai. docs.python-requests.org/en/latest
Peter Hanley

6
Anda pasti harus menggunakan permintaan.
hughdbrown

1
Tetapi ini masih berguna jika Anda terjebak dalam organisasi yang macet yang membuatnya sulit untuk memuat perpustakaan yang bukan bagian dari perpustakaan standar
Thruston
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.