Gson 사용하기

Soondol·2024년 10월 21일

Gson

  • 구글에서 제공하는 Java 라이브러리
  • Java 객체를 JSON 형식으로 변환하거나 JSON 데이터를 Java 객체로 변환하는 데 사용

Java 객체를 JSON으로 변환 (직렬화)

import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        Gson gson = new Gson();
        Car car1 = new Car("자동차", 2024);
        String json = gson.toJson(car1);
        // json = {"name":"자동차","year":2024}
    }
}

class Car {
    String name;
    int year;

    Car(String name, int year) {
        this.name = name;
        this.year = year;
    }
}

JSON을 Java 객체로 변환 (역직렬화)

String json = "{\"name\":\"자동차\",\"year\":2024}";
Car car2 = gson.fromJson(json, Car.class);
System.out.println(car2.name); // 자동차
System.out.println(car2.age);  // 2024

발견한 이슈

  • 데이터를 처리하면서 Gson gson = new Gson() 을 사용해 Java 객체를 Json으로 직렬화하는 과정에서 "="가 \u003d로 변환됨을 목격함.

원인 :
Gson은 JSON 형식의 안전성을 높이기 위해 특정 문자를 Unicode 이스케이프 시퀀스로 변환

해결 :
Gson gson = new Gson()
- 기본 Gson 인스턴스를 생성
- 이 경우, 직렬화 시 HTML 특수 문자(예: <, >, &)가 이스케이프되어 출력
- 예를 들어, <는 \u003c로 변환

Gson gson = new GsonBuilder().disableHtmlEscaping().create()
- GsonBuilder를 사용하여 Gson 인스턴스를 생성
- disableHtmlEscaping() 메서드를 호출하면 HTML 특수 문자가 이스케이프되지 않음
- 원래의 문자 그대로 출력 즉, <는 <로 그대로 나타남

0개의 댓글