Python을 배우기 시작한 초보자들은 JSON 형식과 Python Dictionary가 헷갈릴 수 있습니다. 두 형식 모두 {} 중괄호를 사용하고, key:value 구조로 데이터를 표현하지만, 실제로는 용도와 문법에서 차이가 있습니다. 이번 글에서는 JSON과 Dictionary의 공통점, 차이점, 그리고 Python에서 JSON과 Dictionary 간 변환 방법을 설명합니다.


1. JSON과 Python Dictionary의 공통점

JSON과 Python Dictionary는 모두 데이터를 키-값 쌍으로 표현한다는 점에서 공통점이 있습니다. 이러한 유사성 때문에 초보자들이 동일하게 느끼는 경우가 많습니다.

주요 공통점

  • 키-값 구조: 두 형식 모두 데이터를 {key: value} 형식으로 저장합니다.
  • 중첩 구조 지원: 내부적으로 리스트, 다른 객체 등을 중첩하여 데이터를 표현할 수 있습니다.

예시

JSON 형식:

{
    "name": "Alice",
    "age": 25,
    "skills": ["Python", "Django"]
}

Python Dictionary:

person = {
    "name": "Alice",
    "age": 25,
    "skills": ["Python", "Django"]
}

2. JSON과 Python Dictionary의 차이점

JSON과 Dictionary는 겉보기에는 비슷하지만, 문법과 사용 목적에서 차이가 있습니다.

2.1 사용 목적의 차이

  • JSON: 데이터를 교환하기 위한 언어 독립적인 표준 포맷입니다. Python 외에도 JavaScript, Java, C++ 등 다양한 언어에서 데이터를 주고받는 데 사용됩니다.
  • Python Dictionary: Python 내부에서 데이터를 저장하고 조작하기 위한 Python 전용 데이터 구조입니다.

2.2 문법적인 차이

JSON은 Python Dictionary와 다음과 같은 문법 차이가 있습니다:

특징 JSON Python Dictionary
문자열 표기 문자열은 반드시 "로 표기 문자열은 ' 또는 " 모두 사용 가능
키의 타입 키는 반드시 문자열이어야 함 키는 문자열, 숫자 등 다양한 타입 가능
값의 타입 제한적 (문자열, 숫자, 배열 등) 제한 없음 (함수, 객체 등 포함 가능)
Boolean 값 true, false True, False
null 값 null None
주석 주석 지원하지 않음 주석 사용 가능

예시로 보는 차이점

JSON:

{
    "name": "Alice",
    "age": 25,
    "isActive": true,
    "nickname": null
}

Python Dictionary:

person = {
    "name": "Alice",
    "age": 25,
    "isActive": True,  # 주석 가능
    "nickname": None
}

위 예시에서:

  • JSON에서는 true, false, null을 소문자로 표기하지만,
  • Python에서는 True, False, None처럼 첫 글자를 대문자로 표기합니다.

3. Python Dictionary와 JSON 간 변환

Python에서는 json 모듈을 사용하여 JSON과 Dictionary 간의 변환을 간단히 수행할 수 있습니다.

3.1 Dictionary → JSON 변환

json.dumps()를 사용하여 Python Dictionary를 JSON 문자열로 변환할 수 있습니다.

import json

person = {
    "name": "Alice",
    "age": 25,
    "isActive": True,
    "nickname": None
}

json_data = json.dumps(person)
print(json_data)

출력:

{"name": "Alice", "age": 25, "isActive": true, "nickname": null}

3.2 JSON → Dictionary 변환

json.loads()를 사용하면 JSON 문자열을 Python Dictionary로 변환할 수 있습니다.

import json

json_data = '{"name": "Alice", "age": 25, "isActive": true, "nickname": null}'
person = json.loads(json_data)
print(person)

출력:

{'name': 'Alice', 'age': 25, 'isActive': True, 'nickname': None}

3.3 JSON 데이터 파일 저장 및 읽기

JSON 데이터를 파일로 저장하기
import json

data = {"name": "Alice", "age": 25, "isActive": True}

with open("data.json", "w") as file:
    json.dump(data, file, indent=4)  # indent 옵션 사용
indent 옵션 사용 결과:
  • indent 없이 저장:
    {"name": "Alice","age":25,"isActive":true}
  • indent=4로 저장:
    {
        "name": "Alice",
        "age": 25,
        "isActive": true
    }
JSON 파일 읽기
import json

with open("data.json", "r") as file:
    data = json.load(file)
    print(data)

출력:

{'name': 'Alice', 'age': 25, 'isActive': True}

Conversion process between JSON and Python Dictionary

결론

JSON과 Python Dictionary는 비슷한 구조를 가지고 있지만, 용도문법에서 차이가 있습니다. JSON은 데이터 교환을 위한 표준 형식이고, Python Dictionary는 Python 코드 내에서 데이터를 조작하는 데 적합합니다. Python의 json 모듈을 사용하면 JSON과 Dictionary 간의 변환이 매우 쉬우니, 목적에 맞게 활용하세요!

추가 팁

  • JSON 파일 저장 시 indent 옵션을 사용하면 사람이 읽기 쉬운 파일을 생성할 수 있습니다. 데이터 파일을 다룰 때는 가독성이 중요하니 꼭 활용하세요.
  • JSON과 Dictionary 변환 시 Boolean 값과 null/None의 차이를 항상 염두에 두세요.