ฉันใช้requests
โมดูลหลามเพื่อส่ง RESTful GET ไปยังเซิร์ฟเวอร์ซึ่งฉันได้รับการตอบกลับใน JSON การตอบสนอง JSON นั้นเป็นเพียงรายการ
เป็นวิธีที่ดีที่สุดในการบีบบังคับการตอบสนองต่อวัตถุพื้นเมืองหลามดังนั้นฉันสามารถทำซ้ำหรือพิมพ์โดยใช้pprint
อะไร
ฉันใช้requests
โมดูลหลามเพื่อส่ง RESTful GET ไปยังเซิร์ฟเวอร์ซึ่งฉันได้รับการตอบกลับใน JSON การตอบสนอง JSON นั้นเป็นเพียงรายการ
เป็นวิธีที่ดีที่สุดในการบีบบังคับการตอบสนองต่อวัตถุพื้นเมืองหลามดังนั้นฉันสามารถทำซ้ำหรือพิมพ์โดยใช้pprint
อะไร
คำตอบ:
คุณสามารถใช้json.loads
:
import json
import requests
response = requests.get(...)
json_data = json.loads(response.text)
สิ่งนี้จะแปลงสตริงที่กำหนดเป็นพจนานุกรมซึ่งช่วยให้คุณเข้าถึงข้อมูล JSON ของคุณได้อย่างง่ายดายภายในรหัสของคุณ
หรือคุณสามารถใช้คำแนะนำที่เป็นประโยชน์ของ @ Martijn และคำตอบที่ได้รับการโหวตresponse.json()
มากขึ้น
str()
ที่ใช้ ในทางตรงกันข้ามข้อมูลยูนิโค้ดก็ไม่เลวที่จะมีรอบ (ในการเตรียมการในอนาคต)
response.json()
เพราะมันจะทำงานได้ดีขึ้นในการหาการเข้ารหัสที่ใช้ (ข้อจำกัดความรับผิดชอบฉันเขียนรหัสบางส่วน)
response.text()
?
requests.compat.json.loads(resp_text)
เนื่องจากคุณกำลังใช้requests
คุณควรใช้การตอบสนองของjson
วิธีการ
import requests
response = requests.get(...)
data = response.json()
มันautodetects ซึ่งถอดรหัสกับการใช้งาน
pip install requests
แทนการใช้แพคเกจ deb
data
ชื่อลิสต์หรือพจนานุกรมคืออะไร
data
สะท้อนโครงสร้างของ JSON ที่อ่านอยู่ ตัวอย่างเช่นถ้าการตอบสนองคือ[{"a": {...}}]
, คือรายการที่มีdata
list[0] == {'a': {...}}
ถ้าตอบเป็น{"a": "b", "c": "d"}
, data
เป็น Dict นั่นตอบคำถามของคุณหรือไม่
>>> import requests >>> r = requests.get('http://httpbin.org/get') >>> r.json <bound method Response.json of <Response [200]>> >>> r.json() {'args': {}, ...}