ด้วย Python 3 ฉันกำลังขอเอกสาร json จาก URL
response = urllib.request.urlopen(request)
response
วัตถุเป็นวัตถุไฟล์เช่นเดียวกับread
และreadline
วิธีการ โดยปกติแล้ววัตถุ JSON สามารถสร้างขึ้นด้วยไฟล์ที่เปิดในโหมดข้อความ
obj = json.load(fp)
สิ่งที่ฉันต้องการจะทำคือ:
obj = json.load(response)
อย่างไรก็ตามสิ่งนี้ไม่ทำงานเมื่อ urlopen ส่งคืนวัตถุไฟล์ในโหมดไบนารี
แน่นอนว่าการทำงานรอบ ๆ :
str_response = response.read().decode('utf-8')
obj = json.loads(str_response)
แต่สิ่งนี้รู้สึกไม่ดี ...
มีวิธีที่ดีกว่าที่ฉันสามารถแปลงวัตถุไฟล์ไบต์เป็นวัตถุไฟล์สตริง? หรือฉันไม่มีพารามิเตอร์ใด ๆ สำหรับurlopen
หรือjson.load
ให้การเข้ารหัส