JSON과 Gson은 서로 다른 개념이며, 각기 다른 용도로 사용된다.
1. JSON (JavaScript Object Notation)
JSON은 데이터를 저장하고 교환하기 위한 경량 데이터 형식이다.
- 텍스트 기반의 구조로, 사람이 읽기 쉽고 기계가 분석하기 쉬움.
- 대부분의 언어에서 쉽게 처리 가능.
- 특징:
- 키-값 쌍으로 데이터를 표현.
- 데이터를 직렬화하거나 네트워크 간 전송할 때 사용.
- 언어 독립적이지만, 대부분의 프로그래밍 언어에서 지원됨.
{ "name": "John Doe", "age": 30, "isStudent": false, "skills": ["Java", "Python", "JavaScript"] }
2. Gson
Gson은 Google에서 제공하는 Java 라이브러리로, JSON 형식을 Java 객체로 변환(역직렬화)하거나, Java 객체를 JSON 형식으로 변환(직렬화)하는 기능을 제공한다.
- 주요 기능:
- Java 객체를 JSON으로 변환 (직렬화):
- 객체를 JSON 텍스트 형식으로 변환.
- JSON을 Java 객체로 변환 (역직렬화):
- JSON 데이터를 Java 클래스에 매핑.
- 간단하고 직관적인 API 제공
- Java 객체를 JSON으로 변환 (직렬화):
import com.google.gson.Gson;
public class GsonExample {
public static void main(String[] args) {
// 1. Java 객체를 JSON으로 직렬화
Person person = new Person("John Doe", 30, false);
Gson gson = new Gson();
String json = gson.toJson(person);
System.out.println("JSON 형식: " + json);
// 2. JSON을 Java 객체로 역직렬화
String jsonString = "{\"name\":\"Jane Doe\",\"age\":25,\"isStudent\":true}";
Person personFromJson = gson.fromJson(jsonString, Person.class);
System.out.println("Java 객체: " + personFromJson);
}
}
class Person {
private String name;
private int age;
private boolean isStudent;
// 생성자, Getter/Setter 생략
public Person(String name, int age, boolean isStudent) {
this.name = name;
this.age = age;
this.isStudent = isStudent;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + ", isStudent=" + isStudent + "}";
}
}
JSON vs Gson
항목 JSON Gson
| 정의 | 데이터 표현 형식 | JSON 처리를 위한 Java 라이브러리 |
| 용도 | 데이터 저장 및 교환 | JSON ↔ Java 객체 변환 |
| 형식 | 키-값 쌍 구조 (텍스트 기반) | API를 통해 JSON을 처리하는 도구 |
| 언어 독립성 | 언어 독립적 | Java 전용 |
| 직렬화/역직렬화 | 직접 구현 필요 | 제공되는 메서드로 간단히 처리 가능 |
- JSON은 단순히 데이터를 표현하는 형식으로, 프로그래밍 언어와 독립적이다.
- Gson은 JSON 데이터를 다루기 위한 Java 라이브러리로, 데이터를 직렬화 및 역직렬화하여 쉽게 사용할 수 있도록 도와준다.
'spring > 그 외 알게 된 것' 카테고리의 다른 글
| 이거 봐야해 : 영속성 (0) | 2024.07.10 |
|---|---|
| 예외던지기 (0) | 2024.07.03 |
| 어노테이션 정리 (0) | 2024.06.29 |
| 프록시란 (0) | 2024.06.26 |
| 왜 System.out 대신 Logger를 사용해야 할까? (0) | 2024.06.25 |