본문 바로가기
IT/Python

json.load 와 json.loads 의 차이는 무엇일까요?

by 소소메모 2025. 12. 6.
반응형

Python json 라이브러리에서 가장 헷갈리기 쉬운 부분입니다. 핵심은 끝에 붙은 s가 'String(문자열)'을 의미한다는 점입니다.

이를 기억하면 구분하기 매우 쉽습니다.


1. json.load vs json.loads (읽기/디코딩)

JSON 데이터를 Python 객체(Dictionary, List 등)로 변환(Read)할 때 사용합니다.

  • json.load() (File Load):
    • 파일 객체에서 직접 읽습니다.
    • open() 함수로 연 파일에서 데이터를 읽어올 때 사용합니다.
  • json.loads() (String Load):
    • 문자열(String) 변수에서 읽습니다.
    • 메모리에 이미 로드된 JSON 형식의 문자열 텍스트를 파싱할 때 사용합니다.

예시 코드:

Python
 
import json

# 1. json.loads() : 문자열(s)을 읽음
json_string = '{"name": "Jane", "age": 1}'
data_from_str = json.loads(json_string)
print(data_from_str['name'])  # 출력: Jane

# 2. json.load() : 파일(file)을 읽음
# (data.json 파일이 있다고 가정)
with open('data.json', 'r') as f:
    data_from_file = json.load(f)
    print(data_from_file['name'])

2. json.dump vs json.dumps (쓰기/인코딩)

Python 객체를 JSON 데이터로 변환(Write)할 때 사용합니다.

  • json.dump() (File Dump):
    • Python 객체를 파일 객체에 직접 씁니다 (저장).
    • 결과를 파일로 저장하고 싶을 때 사용합니다.
  • json.dumps() (String Dump):
    • Python 객체를 JSON 문자열(String)로 변환하여 반환합니다.
    • 파일로 저장하지 않고, 단순히 문자열 형태로 변환해서 네트워크로 전송하거나 출력하고 싶을 때 사용합니다.

예시 코드:

Python
 
import json

my_data = {"name": "Jane", "language": "Python"}

# 1. json.dumps() : 문자열(s)로 반환
json_str = json.dumps(my_data)
print(type(json_str)) # <class 'str'>
print(json_str)       # 출력: {"name": "Jane", "language": "Python"}

# 2. json.dump() : 파일(file)에 저장
with open('output.json', 'w') as f:
    json.dump(my_data, f)
    # output.json 파일이 생성되고 내용이 작성됨

3. 요약 비교표

구분 함수명 대상 (Target) 설명 기억 팁
읽기 (Decoding) load() 파일 (File) 파일을 읽어서 Python 객체로 변환 Load File
  loads() 문자열 (String) 문자열을 읽어서 Python 객체로 변환 Load String
쓰기 (Encoding) dump() 파일 (File) Python 객체를 파일에 저장 Dump to File
  dumps() 문자열 (String) Python 객체를 JSON 문자열로 변환 Dump to String

꿀팁: 함수 이름 뒤에 s가 붙으면 무조건 String(문자열)을 다룬다고 생각하시면 됩니다.

반응형

댓글