programing

TypeError: JSON 개체는 'bytes'가 아닌 str이어야 합니다.

css3 2023. 3. 11. 09:19

TypeError: JSON 개체는 'bytes'가 아닌 str이어야 합니다.

저는 다음과 같은 기본적인 코드를 가지고 있습니다.TypeError: the JSON object must be str, not 'bytes'

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)

다음과 같이 데이터 변수에 디코딩을 설정하려고 하지만 동일한 오류가 발생합니다.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샤르데는 연구를 바탕으로 개발된 도서관이다.라이브러리에는 다음 한 가지 기능이 있습니다.detect. Detect는 가장 일반적인 인코딩을 감지한 후 문자열 인코딩에 사용할 수 있습니다.

import chardet
json.loads(myResponse.content.decode(chardet.detect(myResponse.content)["encoding"]))

요청을 통해 암호를 해독할 수 있습니다.

data = response.json()

그러면 헤더(Content-Type)와 응답 인코딩이 확인되고 콘텐츠를 올바르게 디코딩하는 방법이 자동으로 검출됩니다.

python3.6+는 이 automatically.so을 실행합니까? 당신의 코드는 python3.6에서 오류를 반환하지 않아야 합니다.+

python 3.6의 새로운 기능

언급URL : https://stackoverflow.com/questions/42683478/typeerror-the-json-object-must-be-str-not-bytes