본문 바로가기

[Python] 파이썬 requests.exceptions.JSONDecodeError: Expecting value: line 1 column 9 (char 8) 오류 해결법

액트 2023. 11. 9.

소개

requests.exceptions.JSONDecodeError 오류는 보통 Python의 requests 라이브러리를 사용하여 JSON 응답을 파싱할 때 발생합니다. 이 오류는 json() 메서드가 비어 있거나, JSON이 아닌 데이터를 포함하고 있는 응답을 받았을 때 발생합니다. 오류 메시지 "Expecting value: line 1 column 9 (char 8)"는 JSON 파서가 첫 번째 줄의 9번째 열에서 값이 예상되었지만 값을 찾을 수 없었다는 것을 의미합니다.

원인

  1. 응답이 JSON 형식이 아님: 요청한 URL에서 JSON이 아닌 다른 형식의 응답을 받았을 때 발생합니다. 예를 들어, HTML이나 plain text 등입니다.
  2. 응답이 비어 있음: 서버가 아무런 데이터도 반환하지 않았거나 비어 있는 응답을 보냈을 때입니다.
  3. 잘못된 JSON 형식: 서버가 잘못된 형식의 JSON을 반환했을 때입니다. 예를 들어, 따옴표 누락, 괄호 불일치, 불필요한 쉼표 등 JSON 문법에 맞지 않는 경우입니다.
  4. 인코딩 문제: 때때로 서버의 응답이 올바른 인코딩으로 처리되지 않아 JSON 파싱이 실패할 수 있습니다.
  5. 서버 측 오류: 서버에서 처리 중 오류가 발생하여 유효하지 않은 JSON을 반환할 수도 있습니다.

해결방법

이 오류를 해결하기 위해 다음 단계를 시도할 수 있습니다. 서버로부터의 응답이 JSON 형식인지 확인하세요. 응답의 Content-Type 헤더가 application/json인지 확인할 수 있습니다. 서버로부터의 응답 내용을 text 속성을 사용해 직접 확인하세요. 이렇게 하면 응답이 어떤 형식인지 확인할 수 있습니다.

response = requests.get(url)
print(response.text)  # 응답 내용 확인

서버의 응답이 유효한 JSON인지, JSON 유효성 검사기를 사용하여 검증해 보세요. 응답이 JSON 형식이 아니거나 예상한 형식이 아니라면, 서버 측에 문제가 없는지 확인하고, 필요하다면 서버 개발자에게 문의하세요. 잘못된 JSON 형식으로 인한 문제라면, JSON 구문을 올바르게 수정해야 합니다.

댓글