TypeError : JSON 객체는 '바이트'가 아닌 str이어야합니다.
다음과 같은 매우 기본적인 코드가 있습니다. TypeError : JSON 객체는 '바이트'가 아닌 str이어야합니다.
import requests
import json
url = 'my url'
user = 'my user'
pwd = 'my password'
response = requests.get(url, auth=(user, pwd))
if(myResponse.ok):
Data = json.loads(myResponse.content)
다음과 같이 Decode를 Data 변수로 설정하려고하지만 오류가 발생합니다. jData = json.loads(myResponse.content).decode('utf-8')
어떤 제안?
json.loads(myResponse.content.decode('utf-8'))
당신은 그것을 잘못된 순서로 넣었습니다.
(심층 답변). wim이 정중하게 지적했듯이 드물게 UTF-16 또는 UTF-32를 선택할 수 있습니다. 경우는 개발자로서 일반적이며,이 시나리오는 다음과 같이 귀중한 것입니다. 따라서 인코딩 문제가 발생하면 utf-8을 16, 32 등으로 사용할 수 있습니다.
이에 대한 몇 가지 해결 방법이 있습니다. 요청의 내장 .json()
기능을 사용할 수 있습니다 .
myResponse.json()
또는을 통해 문자 감지를 선택할 수 있습니다 chardet
. Chardet은 연구를 기반으로 개발 된 라이브러리입니다. 라이브러리에는 detect
. 감지는 가장 일반적인 인코딩을 감지 한 다음이를 사용하여 인코딩을 인코딩 할 수 있습니다.
import chardet
json.loads(myResponse.content.decode(chardet.detect(myResponse.content)["encoding"]))
요청이이를 사용하도록 권장합니다.
data = response.json()
헤더 (Content-Type) 및 응답 인코딩을 확인하여 콘텐츠를 사용하는 방법을 자동 감지합니다.
python3.6 +는이 작업을 자동으로 수행 코드 오류가 python3.6 +에서 반환하지 않습니다.
참고 URL : https://stackoverflow.com/questions/42683478/typeerror-the-json-object-must-be-str-not-bytes
'ProgramingTip' 카테고리의 다른 글
업데이트 할 수 없음 : 추적 된 분기 없음 (0) | 2020.11.23 |
---|---|
Python이 같은 폴더에서 모듈을 수 없습니다. (0) | 2020.11.23 |
'localhost'에서 MySQL 서버에 수 없음 (10061) (0) | 2020.11.23 |
C ++ STL 세트 차이 (0) | 2020.11.23 |
왜 wait ()는 항상 루프 내에서 호출됩니까? (0) | 2020.11.23 |