정 보 교 환

JSON, 그것이 무엇인가요? (개요)

sageput 2025. 9. 30. 10:59
반응형

   JSON(제이슨, JavaScript Object Notation)은 컴퓨터 세상의 공용어라고 생각하면 가장 쉬워요.

   사람들이 서로 다른 언어를 쓰면 소통이 어렵잖아요? 그래서 '영어'라는 공용어를 사용하죠. 컴퓨터 프로그램들도 각자 데이터를 저장하고 이해하는 방식(언어)이 달라요. A 프로그램이 B 프로그램에게 정보를 전달할 때, 서로 알아들을 수 있는 약속된 형식이 필요한데, 그중 가장 널리 쓰이는 것이 바로 JSON입니다.

 

핵심 요약:

  • **데이터를 표현하는 약속된 형식(포맷)**입니다.
  • 사람이 눈으로 읽고 이해하기 쉽습니다.
  • 컴퓨터(기계)도 쉽게 분석하고 만들 수 있습니다.
  • 특정 프로그래밍 언어에 얽매이지 않아서, Python, Java, JavaScript 등 거의 모든 언어에서 사용할 수 있습니다.

📝 JSON은 어떻게 생겼나요? (생성 규칙)

 

JSON은 딱 두 가지 기본 구조로 모든 것을 표현합니다.

 

1. Key-Value (키-값) 쌍

가장 중요한 규칙이에요. 마치 국어사전에서 '단어'와 '뜻'이 짝을 이루는 것과 같습니다.

  • Key(키): 데이터의 이름표. 반드시 **큰따옴표(")**로 감싸야 합니다.
  • Value(값): 실제 데이터.

JSON

 

"이름": "홍길동"

위 예시에서 "이름"이 Key, "홍길동"이 Value입니다. 이 둘을 콜론(:)으로 연결하죠.

 

2. 데이터의 종류 (Value가 될 수 있는 것들)

Value 자리에는 다음과 같은 다양한 종류의 데이터를 넣을 수 있어요.

  • 문자열(String): 글자들. 큰따옴표(")로 감쌉니다.
  • "안녕하세요", "서울시"
  • 숫자(Number): 따옴표 없이 그냥 씁니다.
  • 25, 180.5
  • 참/거짓(Boolean): true 또는 false 둘 중 하나입니다. (따옴표 없음)
  • 객체(Object): 여러 개의 Key-Value 쌍을 **중괄호({ })**로 묶은 것. 데이터 덩어리를 표현할 때 사용합니다.
    JSON
    {
      "이름": "홍길동",
      "나이": 30,
      "사는곳": "서울"
    }

  • 배열(Array): 여러 개의 값을 순서대로 **대괄호([ ])**로 묶은 것. 목록을 표현할 때 사용합니다.
    JSON
    [ "게임", "독서", "영화보기" ]
  • null: 값이 없음을 나타냅니다. (따옴표 없음)

종합 예시

이 규칙들을 조합하면 아래와 같이 복잡한 정보도 깔끔하게 표현할 수 있습니다.

JSON

{
  "이름": "김코딩",
  "나이": 28,
  "프로그래머": true,
  "수강과목": [ "웹 개발", "알고리즘", "데이터베이스" ],
  "연락처": {
    "이메일": "coding.kim@example.com",
    "휴대폰": null
  }
}


🚀 JSON 데이터는 어떻게 보내지나요? (변환과 전송)

 

프로그램 속 데이터(예: Python의 딕셔너리)를 다른 프로그램으로 보내려면, 여행용 가방에 짐을 싸는 과정이 필요해요.

  1. 직렬화 (Serialization): 짐 싸기
  • 프로그램이 사용하는 데이터 구조(객체, 배열 등)를 JSON 규칙에 맞는 **하나의 긴 텍스트(문자열)**로 변환하는 과정입니다.
  • 이렇게 텍스트로 변환해야 네트워크를 통해 쉽게 전송할 수 있습니다. 마치 옷, 책, 세면도구를 캐리어(텍스트)에 차곡차곡 담는 것과 같아요.
  1. 전송 (Transmission)
  • 변환된 JSON 텍스트를 인터넷을 통해 다른 컴퓨터나 서버로 보냅니다.
  1. 역직렬화 (Deserialization): 짐 풀기
  • 전송받은 JSON 텍스트를 다시 프로그램이 이해할 수 있는 데이터 구조(객체, 배열 등)로 풀어주는 과정입니다.
  • 목적지에 도착해서 캐리어를 열고 옷, 책 등을 꺼내 정리하는 것과 같습니다.

이 과정을 통해 서로 다른 환경에서 개발된 프로그램들이라도 JSON이라는 공통된 '짐 싸기/풀기' 규칙 덕분에 원활하게 데이터를 주고받을 수 있습니다.


🐍 파이썬(Python)에서 JSON 사용하기

 

파이썬은 json이라는 아주 편리한 기본 라이브러리를 제공해서 JSON을 쉽게 다룰 수 있습니다.

 

1. Python 데이터 → JSON 텍스트로 변환 (직렬화)

파이썬의 딕셔너리(dict)나 리스트(list)를 JSON 문자열로 만들 때는 json.dumps() 함수를 사용합니다. 'dumps'는 'dump string'의 약자)

Python

import json

# 파이썬 딕셔너리 데이터
person_data = {
  "name": "이파이",
  "age": 25,
  "is_student": True,
  "courses": ["Python", "Data Science"]
}

# 딕셔너리를 JSON 문자열로 변환 (직렬화)
# ensure_ascii=False 옵션은 한글이 깨지지 않고 그대로 보이게 해줍니다. (중요!)
json_string = json.dumps(person_data, ensure_ascii=False, indent=2)

print("--- JSON 문자열 (전송용 텍스트) ---")
print(json_string)

실행 결과:

 

--- JSON 문자열 (전송용 텍스트) ---
{
  "name": "이파이",
  "age": 25,
  "is_student": true,
  "courses": [
    "Python",
    "Data Science"
  ]
}

  • indent=2 옵션은 보기 좋게 2칸씩 들여쓰기를 해줍니다.
  • 파이썬의 True는 JSON의 true로, None은 null로 자동으로 바뀝니다.
  •  

2. JSON 텍스트 → Python 데이터로 변환 (역직렬화)

반대로, JSON 형식의 문자열을 받아서 파이썬이 쓸 수 있는 딕셔너리나 리스트로 만들 때는 json.loads() 함수를 사용합니다. ('loads'는 'load string'의 약자)

Python

 

import json

# 다른 곳에서 받았다고 가정한 JSON 문자열
received_json_string = """
{
  "product_name": "스마트폰",
  "price": 1200000,
  "in_stock": true
}
"""

# JSON 문자열을 파이썬 딕셔너리로 변환 (역직렬화)
product_data = json.loads(received_json_string)

print("--- 파이썬 딕셔너리 ---")
print(product_data)

# 이제 파이썬 딕셔너리처럼 자유롭게 사용할 수 있습니다.
print("\n제품명:", product_data["product_name"])
print("가격:", product_data["price"])

실행 결과:

 

--- 파이썬 딕셔너리 ---
{'product_name': '스마트폰', 'price': 1200000, 'in_stock': True}

제품명: 스마트폰
가격: 1200000

  • JSON의 {"key": "value"} 객체는 파이썬의 딕셔너리로, ["a", "b"] 배열은 리스트로 자동으로 변환됩니다.

JSON은 현대 웹 개발과 데이터 통신의 기본 중의 기본입니다. 이 개념만 잘 이해해 두시면 앞으로 어떤 프로그래밍을 하시든 큰 도움이 될 거예요!



반응형