JSON이란??

Weed·2024년 12월 18일
0

개발 기초 개념

목록 보기
2/5

JSON이란?? 개념 알아보기

1️⃣ JSON의 정의와 역할

JSON은 JavaScript Object Notation의 약자로, 데이터를 저장하거나 교환하기 위해 사용하는 가벼운 데이터 형식이다.
기본적으로 Key-Value Pair로 데이터를 표현하며, 사람과 컴퓨터 모두 읽고 쓰기 쉽도록 설계되었다.

2️⃣ JSON 주요 특징

  1. 텍스트 기반: 사람이 읽기 쉽고, 대부분의 프로그래밍 언어에서 사용 가능
  2. 구조화된 데이터: 데이터를 계층적으로 표현 가능 (배열, 객체 등)
  3. 언어 독립적: JSON은 JavaScript에서 유래했지만, Python, Java, C#, PHP 등 대부분의 언어에서 지원한다.

❗️데이터를 계층적으로 표현??

이는 데이터를 중첩된 구조로 정리할 수 있다는 의미이다. 하나의 데이터 안에 또 다른 데이터(객체나 배열)를 포함시켜서 상하 관계 또는 포함 관계를 표현할 수 있다.
계층적 구조를 생각할 때 나무를 떠올리면 이해하기 쉽다.

  • 뿌리: 데이터를 시작하는 중심
  • 가지: 데이터를 세부적으로 나누는 분류
  • 잎: 각각의 데이터 값
    JSON에서 이런 뿌리-가지-잎 관계를 객체(Object)배열(Array)로 표현한다.

JSON의 계층적 구조 예제

(1) 단순한 데이터 (평면적인 구조)

{
  "name": "홍길동",
  "age": 25,
  "city": "서울"
}
  • 여기서는 데이터가 나열되어 있지만, 특별히 안에 또 다른 데이터가 포함되어 있지 않다.

(2) 계층적 데이터 (중첩된 구조)

{
  "name": "홍길동",
  "age": 25,
  "address": {
    "city": "서울",
    "district": "강남구",
    "street": "테헤란로"
  },
  "hobbies": ["축구", "독서"]
}
  • address안에 또 다른 객체가 있다. 이 객체는 city, district, street 정보를 가진다.
  • hobbies는 배열로 취미 리스트를 가진다.

계층적 구조의 의미

  1. 데이터 그룹화 가능
    여러 관련 데이터를 하나의 큰 데이터 안에 그룹화 할 수 있다. 예를 들어, address 객체는 모든 주소 정보를 한곳에 모아둔 데이터이다.
  2. 복잡한 정보 표현 가능
    단순히 한 줄씩 나열하는 것이 아니라, 데이터를 더 구조적으로 표현할 수 있다.
    예시: 한 사용자의 이름, 나이, 주소, 취미를 명확히 구분
  3. 가독성 향상
    데이터가 계층적으로 정리되면, 사람이 읽거나 데이터를 처리하는 프로그램도 더 쉽게 이해핤 수 있다.

더 복잡한 계층적 JSON 예제

{
  "storeName": "Tech Shop",
  "products": [
    {
      "name": "Laptop",
      "price": 1200,
      "specs": {
        "brand": "Lenovo",
        "processor": "Intel i7",
        "ram": "16GB"
      }
    },
    {
      "name": "Smartphone",
      "price": 800,
      "specs": {
        "brand": "Samsung",
        "processor": "Exynos",
        "ram": "8GB"
      }
    }
  ]
}
  • product는 배열로, 여러 상품 데이터를 포함한다.
  • 배열 안의 각 상품 (Laptop, Smartphone)은 객체로 표현되며, 각 상품마다 다른 속성 (이름, 가격, 스펙 등)을 가진다.
  • 각 상품의 specs는 중첩된 객체로, 상품의 상세 사양을 지정한다.

계층적 구조의 장점

  1. 정보 분류가 명확
    관련된 데이터를 묶어서 저장할 수 있으므로 데이터 의미가 분명해진다.
  2. 복잡한 데이터 표현 가능
    예를 들어, 위처럼 상품마다 서로 다른 세부 정보를 담을 수 있다.
  3. 데이터 확장 용이
    새로운 정보가 추가될 때 기존 구조에 영향을 주지 않고 쉽게 확장 가능하다. (예: specs에 추가로 weight, battery 같은 속성을 더해도 구조가 깨지지 않음.)

Python 예제

프로그래밍 언어에서 이런 계층적 구조를 탐색하고 가공하는 작업을 쉽게 처리할 수 있다.

import json

# JSON 데이터
json_data = '''
{
  "name": "홍길동",
  "address": {
    "city": "서울",
    "district": "강남구"
  },
  "hobbies": ["축구", "독서"]
}
'''

# JSON 문자열을 Python 객체로 변환
data = json.loads(json_data)

# 계층적 데이터 접근
print(data["name"])             # 홍길동
print(data["address"]["city"])  # 서울
print(data["hobbies"][0])       # 축구

3️⃣ JSON 기본 문법

1. JSON 구성 요소

JSON 데이터는 객체배열 이 두가지 요소로 이루어진다.

  1. 객체
    객체는 {}로 묶이며 으로 데이터를 저장한다.
{
  "key": "value"
}
  1. 배열
    배열은 []로 묶이며, 데이터의 순서 있는 리스트를 표현한다.
[
  "value1",
  "value2",
  "value3"
]

2. JSON 데이터 타입

  • 문자열: ""로 감싼 텍스트
  • 숫자: 정수 or 소수
  • 불리언: true or false
  • 배열: 여러 값을 저장하는 리스트
  • 객체: key-value 쌍의 집합
  • null: 빈 값

4️⃣ JSON 활용 사례

1. 웹 개발

JSON은 웹 애플리케이션에서 클라이언트와 서버 간 데이터 교환 시 사용
(ex. 브라우저가 서버로부터 사용자 정보를 JSON 형태로 받아온다.)

{
  "userId": 12345,
  "username": "john_doe",
  "email": "john.doe@example.com"
}

2. 모바일 앱

모바일 앱에서 서버와 데이터를 주고받을 때 사용
(ex. 유튜브 앱에서 동영상 목록을 JSON 형태로 요청/응답)

[
  {
    "title": "JSON Tutorial",
    "views": 1500,
    "duration": "10:32"
  },
  {
    "title": "Understanding APIs",
    "views": 2400,
    "duration": "12:45"
  }
]

3. 데이터 저장

JSON은 간단한 설정 파일이나 로컬 데이터 저장소로 사용
(ex. 앱 설정 파일 [config.json])

{
  "theme": "dark",
  "language": "ko",
  "notifications": true
}

5️⃣ JSON 작성 시 유의할 점

  1. Key는 무조건 문자열이어야 한다.
  2. Value는 다양한 타입을 사용할 수 있다.
  3. 쉼표로 항목을 구분한다.
  4. 이 문법을 지키지 않으면 JSON은 읽지 못한다.

6️⃣ JSON vs XML

profile
개발자로 전직해보자

0개의 댓글