ด้วย 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ให้การเข้ารหัส