본문 바로가기

spring/그 외 알게 된 것

Gson과 Json은 뭐가 다를까

JSONGson은 서로 다른 개념이며, 각기 다른 용도로 사용된다. 


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 형식으로 변환(직렬화)하는 기능을 제공한다.

  • 주요 기능:
    1. Java 객체를 JSON으로 변환 (직렬화):
      • 객체를 JSON 텍스트 형식으로 변환.
    2. JSON을 Java 객체로 변환 (역직렬화):
      • JSON 데이터를 Java 클래스에 매핑.
    3. 간단하고 직관적인 API 제공
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