ฉันใช้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': {}, ...}