Làm cách nào để yêu cầu và xử lý JSON với python?


91

Tôi đang cố gắng gửi một yêu cầu GET đến một URL mà tôi biết trả về dữ liệu ở dạng JSON bằng cách sử dụng python.

Tôi muốn biết cách gửi yêu cầu này tới http://someurl/path/to/jsonvà cách phân tích cú pháp nó - tốt nhất là dùng một lệnh python.


2
tôi có thể vui lòng yêu cầu bạn chuyển câu trả lời được chấp nhận của bạn sang câu trả lời sử dụng yêu cầu không?
webjunkie

Chắc chắn, đó là cách tôi muốn làm điều đó ngày nay :)
sa125

Câu trả lời:


130

Đối với bất kỳ thứ gì có yêu cầu tới URL, bạn có thể muốn xem các yêu cầu . Đối với JSON nói riêng:

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

1
chạy nó với $ python GetJson.py không đưa ra bất cứ phản ứng nhưng điều tương tự khi chạy từng cái một trên python CLI làm việc sai lầm fine.any tôi khi đặt nó trong một .py(Noob ma trong python)?
prayagupd

1
Vấn đề tôi đang gặp phải với điều này, là các trình tuần tự DjangoRestFramework không chấp nhận đây là json hợp lệ, do tiền tố 'u' trước các khóa.
wobbily_col

2
@PrayagUpd một cái cũ, và bạn có thể đã tìm ra nó, nhưng đối với bất kỳ ai khác thắc mắc về nó: trong một .pytệp cần phải print(r.json())xem phản hồi.
Antti Haapala

73

Thư viện tiêu chuẩn của Python có jsonurllib2các mô-đun.

import json
import urllib2

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

21
Đây là một câu hỏi cũ, nhưng tôi muốn tham gia webjunkie và chỉ ra rằng vào năm 2012, thư viện Yêu cầu: HTTP cho Con người là một câu trả lời có thể thích hợp hơn. docs.python-requests.org/en/latest
Peter Hanley

6
Bạn chắc chắn nên sử dụng các yêu cầu.
hughdbrown

1
Nhưng điều này vẫn còn hữu ích nếu bạn đang bị mắc kẹt trong một tổ chức đen tối mà làm cho nó khó có thể thư viện tải mà không phải là một phần của thư viện chuẩn
Thruston
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.