MCP - 7일차(JSON)

Jun·2026년 2월 14일

MCP

목록 보기
11/20

JSON 데이터 처리 완벽 정리

1. JSON (JavaScript Object Notation) 이란?

  • 정의: 데이터 교환 용도의 JavaScript 객체 구문입니다.
  • 특징: 오늘날 웹, 앱 등 애플리케이션 개발에서 데이터 교환에 사용되는 가장 중요한 텍스트 포맷입니다.

2. 데이터 타입 비교 (Python vs JS)

파이썬과 자바스크립트의 데이터 구문은 모양은 거의 동일하나, 명칭과 세부 규칙이 조금 다릅니다.

데이터 종류JSON파이썬 (Python)자바스크립트 (JS)
숫자숫자int, floatnumber
문자열"" (쌍따옴표)strstring
리스트/배열[]listarray
객체/딕셔너리{name:value}dictobject
논리값true / falsebool (True/False)boolean
빈 값nullNonenull

3. JSON 구문의 핵심 규칙

  1. 반드시 쌍따옴표(") 사용: name(key)과 문자열 데이터는 반드시 쌍따옴표로 감싸야 합니다.
    • 예: {"name": "John"} (O) / {'name': 'John'} (X)
  2. Trailing Comma 불가: 배열이나 객체의 마지막 원소 뒤에 콤마(,)를 허용하지 않습니다.
  3. 담을 수 있는 것: str, int, float, list, tuple, dict, None
  4. 담을 수 없는 것: set, function, datetime (별도의 직렬화 과정 필요)

4. Python json 모듈 사용법

파이썬에서는 import json을 통해 기본적으로 JSON 기능을 제공합니다.

A. json.dumps() : Python 데이터 → JSON 문자열 (직렬화)

    import json

    # 문자열 변환
    print(json.dumps('hello')) 
    # 결과: "hello"

    # 딕셔너리 변환
    print(json.dumps({'name': 'John'})) 
    # 결과: {"name": "John"}

    # 리스트 변환
    print(json.dumps([10, 20, 30])) 
    # 결과: [10, 20, 30]

    # 논리값 및 None 변환
    print(json.dumps([True, False, None])) 
    # 결과: [true, false, null]

### B. json.loads() : JSON 문자열 → Python 데이터 (역직렬화)

    import json

    # JSON 문자열 준비
    json_texts = [
        "[4, 5, 6]",
        '{"name":"hong", "age":13}'
    ]

    for text in json_texts:
        obj = json.loads(text)
        print(obj, type(obj))

    # 주의사항: 
    # '{'name':'hong'}' -> key에 홀따옴표 사용 시 에러 발생
    # '[4, 5, 6,]' -> 마지막 콤마 포함 시 에러 발생

### C. 파일 입출력 (json.load / json.dump)

    # 1. 파일 생성 및 쓰기 (준비 과정)
    with open('data.json', 'w', encoding='utf-8') as f:
        f.write('''
        {
          "name": "홍길동",
          "birth": "0525",
          "age": 30
        }
        ''')

    # 2. json.load(file) : JSON 파일 -> 파이썬 데이터
    with open('data.json', 'r', encoding='utf-8') as f:
        obj = json.load(f)
        print(obj)
        print(f"타입: {type(obj)}")
profile
Hard Trying

0개의 댓글