python3 json 오류 수정:from None json.decoder.JSONDecodeError: Expecting value: line 1 column 6 (char 5)

컨디션
  • Ubuntu 16.04 LTS
  • python3.x

  • 문제 설명
  • 문자열에서 json 대상으로 전환할 때 다음과 같은 오류가 발생했습니다.
    Traceback (most recent call last):
      File "", line 1, in 
      File "/usr/lib/python3.5/json/__init__.py", line 319, in loads
        return _default_decoder.decode(s)
      File "/usr/lib/python3.5/json/decoder.py", line 339, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "/usr/lib/python3.5/json/decoder.py", line 357, in raw_decode
        raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 6 (char 5)
    
    
  • 샘플 코드:
    import json
    
    str_json = '{"a":NULL, "b":1}'
    json_data = json.loads(str_json)
    
    
  • 오류 원인 분석
    str_json에서 다섯 번째 문자부터 불법 문자, 즉'NULL'[]이다. 한 마디로 하면 이런 오류는 json 문자열이 불법이라는 것을 의미한다. 예를 들어 형식 오류, 값 유형 오류 등이다.
    솔루션
  • 1,try를 사용하여 이상을 던지고 오류 데이터를 건너뛰기
    import json
    	
    str_json = '{"a":NULL, "b":1}'
    try:
        json_data = json.loads(str_json)
    except Exception as e:
        print('error:', e)
    
    출력:
    error: Expecting value: line 1 column 6 (char 5)
    
  • 2. 원천 해결 데이터가 json 문자열로 바뀔 때 json을 사용합니다.dumps () 함수, 문자열을 대상으로 불러올 때 json.loads
    import json
    
    json_data = {"a":None, "b":1}
    print('json_data:', json_data)
    
    str_json = json.dumps(json_data) #  json.dumps()  
    print('str_json:', str_json)
    
    json_data = json.loads(str_json)
    print('json_data:', json_data)
    
    출력:
    json_data: {'a': None, 'b': 1}
    str_json: {"a": null, "b": 1}
    json_data: {'a': None, 'b': 1}
    
    strNone/NULL 대신 json에 null이 나타납니다.
  • 좋은 웹페이지 즐겨찾기