Python을 배우기 시작한 초보자들은 [[JSON]] 형식과 Python Dictionary가 헷갈릴 수 있습니다. 두 형식 모두 **{}** 중괄호를 사용하고, **key:value** 구조로 데이터를 표현하지만, 실제로는 용도와 문법에서 차이가 있습니다. 이번 글에서는 JSON과 Dictionary의 **공통점**, **차이점**, 그리고 **Python에서 JSON과 Dictionary 간 변환 방법**을 설명합니다. --- ### 1. JSON과 Python Dictionary의 공통점 {#sec-08c57bde69d1} 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의 차이점 {#sec-572974696edf} 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 간 변환 {#sec-97d726d31911} 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](/media/whitedec/blog_img/json_conversion_process.webp) --- ### 결론 {#sec-6a1be6146101} JSON과 Python Dictionary는 비슷한 구조를 가지고 있지만, **용도**와 **문법**에서 차이가 있습니다. JSON은 데이터 교환을 위한 표준 형식이고, Python Dictionary는 Python 코드 내에서 데이터를 조작하는 데 적합합니다. Python의 `json` 모듈을 사용하면 JSON과 Dictionary 간의 변환이 매우 쉬우니, 목적에 맞게 활용하세요! ### 추가 팁 {#sec-e746aa70cbac} * JSON 파일 저장 시 `indent` 옵션을 사용하면 사람이 읽기 쉬운 파일을 생성할 수 있습니다. 데이터 파일을 다룰 때는 가독성이 중요하니 꼭 활용하세요. * JSON과 Dictionary 변환 시 Boolean 값과 `null`/`None`의 차이를 항상 염두에 두세요.