웹 개발

JSON이란?

Blue_bull 2025. 2. 9. 23:25

JSON이란?

JSON (JavaScript Object Notation) 은 데이터를 저장하고 전송하는 데 사용하는 경량 데이터 형식이야.
✔ 사람이 읽기 쉽고, 키-값 (Key-Value) 쌍으로 데이터를 표현
✔ 웹에서 클라이언트(브라우저)와 서버 간 데이터 교환할 때 자주 사용
✔ 언어 독립적이지만, JavaScript 문법을 기반으로 함


JSON의 기본 형식

JSON은 텍스트 기반의 데이터 구조로, 중괄호 {}와 배열 []을 사용해 데이터를 표현해.

{
    "name": "Alice",
    "age": 25,
    "isStudent": false,
    "skills": ["JavaScript", "Java", "Python"]
}

키(Key): "name", "age", "isStudent", "skills"
값(Value): 문자열, 숫자, 불리언, 배열 등 다양한 타입을 가짐


JSON 데이터 타입

타입 예제
문자열 (String) "name": "Alice"
숫자 (Number) "age": 25
불리언 (Boolean) "isStudent": false
배열 (Array) "skills": ["JavaScript", "Java"]
객체 (Object) "address": { "city": "Seoul", "zip": "12345" }
null "nickname": null

JSON과 객체 매핑 (Java 예제)

JSON 데이터를 Java 객체로 변환하는 걸 역직렬화(Deserialization),
Java 객체를 JSON으로 변환하는 걸 직렬화(Serialization) 라고 해.

📌 JSON → Java 객체 변환 (역직렬화)

import com.fasterxml.jackson.databind.ObjectMapper;

class Person {
    public String name;
    public int age;
}

public class Main {
    public static void main(String[] args) throws Exception {
        String json = "{ \"name\": \"Alice\", \"age\": 25 }";
        ObjectMapper objectMapper = new ObjectMapper();

        Person person = objectMapper.readValue(json, Person.class);
        System.out.println(person.name); // "Alice"
        System.out.println(person.age);  // 25
    }
}

📌 Java 객체 → JSON 변환 (직렬화)

Person person = new Person();
person.name = "Alice";
person.age = 25;

String jsonString = objectMapper.writeValueAsString(person);
System.out.println(jsonString);
// 출력: {"name":"Alice","age":25}

JSON의 특징

가볍고 빠름 → XML보다 간결한 구조
언어 독립적 → Java, Python, JavaScript 등 모든 언어에서 사용 가능
데이터 교환의 표준 → API, 데이터 저장, 서버-클라이언트 통신에 많이 사용됨
계층 구조 가능 → 중첩된 객체와 배열 표현 가능


JSON과 XML 비교

비교 항목 JSON XML
가독성 직관적이고 간결 태그가 많아 다소 복잡
데이터 표현 키-값 구조 계층적 태그 구조
파일 크기 작음
파싱 속도 빠름 상대적으로 느림

📌 JSON은 XML보다 더 가볍고 다루기 쉬워, 최신 웹 개발에서 데이터 교환 표준으로 자리 잡았어!


정리

JSON은 데이터를 저장하고 전송하는 경량 포맷 (Key-Value 구조)
웹 개발에서 서버-클라이언트 간 데이터 교환에 필수적
Java에서도 Jackson 등의 라이브러리를 이용해 JSON을 쉽게 다룰 수 있음
XML보다 가볍고 빠르며, 다양한 언어에서 활용 가능

🚀 이제 JSON이 뭔지 명확히 이해됐지? 더 궁금한 거 있으면 질문해줘! 😃

Self-Describing(자기 서술적, 자기 기술적)란?
데이터 자체가 그 의미를 설명할 수 있도록 구조화된 데이터 형식을 의미해.
즉, 데이터를 해석하기 위해 별도의 문서나 설명이 필요 없이, 데이터만 보고도 의미를 이해할 수 있는 구조를 갖춘 것을 뜻해.


1. Self-Describing의 특징

  • 데이터 필드(키, 속성 이름)가 의미를 직접 설명함.
  • 데이터가 어떤 내용을 담고 있는지 추가 설명 없이도 이해할 수 있음.
  • JSON, XML 같은 형식이 대표적인 Self-Describing 데이터 포맷.

2. JSON이 Self-Describing인 이유

📌 예제: JSON 데이터

{
    "name": "Alice",
    "age": 25,
    "isStudent": false
}

"name", "age", "isStudent" 이러한 키(Key)들이 각각의 값(Value)이 무엇을 의미하는지 직접 설명하고 있음.
"age": 25이 사람이 25살이라는 의미를 추가 설명 없이 알 수 있음.
추가적인 문서 없이도 데이터만 보면 내용을 쉽게 이해할 수 있음.


3. 반대로 Self-Describing이 아닌 데이터

📌 예제: CSV 데이터 (비자기서술적)

Alice, 25, false
Bob, 30, true

✔ 데이터만 보면 각 값이 무엇을 의미하는지 알기 어려움
"Alice"가 이름인지, "25"가 나이인지, "false"가 학생 여부인지 문서를 참고해야 함

📌 컬럼 헤더를 추가하면 좀 더 이해하기 쉬움

name, age, isStudent
Alice, 25, false
Bob, 30, true

✔ 이 경우 컬럼 이름이 데이터를 설명하므로 Self-Describing 성격이 일부 추가됨.


4. Self-Describing이 중요한 이유

데이터를 읽고 이해하는 데 추가 문서가 필요 없음
데이터를 쉽게 공유하고 API에서 활용 가능
유지보수와 확장성이 뛰어남

📌 대표적인 Self-Describing 데이터 포맷
| 데이터 형식 | Self-Describing 여부 | 설명 |
|------------|----------------|------|
| JSON | ✅ Yes | 키-값 구조로 데이터가 의미를 직접 설명 |
| XML | ✅ Yes | 태그(<name>Alice</name>)가 데이터를 설명 |
| CSV | ❌ No (부분적) | 컬럼 헤더 없으면 데이터 의미를 알기 어려움 |
| Binary Data | ❌ No | 별도의 해석 도구 필요 |


5. 정리

Self-Describing 데이터란? 데이터 자체가 의미를 설명하는 구조
JSON과 XML은 Self-Describing 데이터 포맷의 대표적인 예
CSV, 바이너리 데이터는 별도 문서가 필요하기 때문에 Self-Describing이 아님
Self-Describing 데이터는 API, 데이터 공유, 유지보수 측면에서 매우 유리함

🚀 즉, JSON이 Self-Describing한 이유는, 데이터 자체가 의미를 설명할 수 있도록 구조화되어 있기 때문이야! 😃

'웹 개발' 카테고리의 다른 글

Query String(쿼리 문자열)이란?  (0) 2025.02.09
JSON, JavaScript의 객체 생성 방식과 리터럴  (0) 2025.02.09
JSON 매핑  (0) 2025.02.09
JSP 스코프  (0) 2025.02.09
HTTP  (0) 2025.02.09