✅ 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 |