Với Python 3 tôi đang yêu cầu một tài liệu json từ một URL.
response = urllib.request.urlopen(request)
Đối response
tượng là một đối tượng giống như tệp với read
và readline
các phương thức. Thông thường một đối tượng JSON có thể được tạo bằng một tệp được mở ở chế độ văn bản.
obj = json.load(fp)
Những gì tôi muốn làm là:
obj = json.load(response)
Tuy nhiên, điều này không hoạt động vì urlopen trả về một đối tượng tệp ở chế độ nhị phân.
Một công việc xung quanh là tất nhiên:
str_response = response.read().decode('utf-8')
obj = json.loads(str_response)
nhưng điều này cảm thấy tồi tệ ...
Có cách nào tốt hơn để tôi có thể chuyển đổi một đối tượng tệp byte thành một đối tượng tệp chuỗi không? Hoặc tôi đang thiếu bất kỳ tham số nào cho một urlopen
hoặc json.load
để mã hóa?