ฉันจะขอและประมวลผล JSON ด้วย python ได้อย่างไร


91

ฉันพยายามส่งคำขอ GET ไปยัง URL ที่ฉันรู้ว่าส่งคืนข้อมูลในรูปแบบของ JSON โดยใช้ python

ฉันต้องการทราบวิธีส่งคำขอนี้http://someurl/path/to/jsonและวิธีการแยกวิเคราะห์ - โดยเฉพาะอย่างยิ่งไปที่ python dict


2
ฉันขอให้คุณเปลี่ยนคำตอบที่ยอมรับโดยใช้คำขอได้ไหม
webjunkie

แน่นอนว่าวันนี้ฉันจะทำมัน :)
sa125

คำตอบ:


130

สำหรับสิ่งที่มีการร้องขอไปยัง URL ที่คุณอาจต้องการที่จะตรวจสอบการร้องขอ สำหรับ 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
การรันด้วย$ python GetJson.py ไม่ได้ให้การตอบสนองใด ๆแต่สิ่งเดียวกันเมื่อรันทีละรายการบน python CLI ทำงานได้ดีฉันทำผิดพลาดขณะวางไว้ใน a .py? (ma noob ใน python)
ภาวนา

1
ปัญหาที่ฉันพบคือซีเรียลไลเซอร์ DjangoRestFramework ไม่ยอมรับสิ่งนี้เป็น json ที่ถูกต้องเนื่องจากคำนำหน้า 'u' ก่อนคีย์
wobbily_col

2
@PrayagUpd อันเก่าและคุณอาจจะพบ แต่สำหรับใครก็ตามที่สงสัยเกี่ยวกับเรื่องนี้: ใน.pyไฟล์จำเป็นต้องprint(r.json())ดูการตอบสนอง
Antti Haapala

73

ไลบรารีมาตรฐานของ Python มีjsonและurllib2โมดูล

import json
import urllib2

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

21
นี่เป็นคำถามเก่า แต่ฉันต้องการเข้าร่วม webjunkie และชี้ให้เห็นว่าในปี 2012 คำขอไลบรารี: HTTP for Humans เป็นคำตอบที่ดีกว่า docs.python-requests.org/en/latest
Peter Hanley

6
คุณควรใช้คำขออย่างแน่นอน
hughdbrown

1
แต่สิ่งนี้ยังมีประโยชน์หากคุณติดอยู่ในองค์กรที่ไม่ถูกต้องซึ่งทำให้ยากที่จะโหลดไลบรารีที่ไม่ได้เป็นส่วนหนึ่งของไลบรารีมาตรฐาน
Thruston
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.