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;
}
}
String json = "{\"name\":\"자동차\",\"year\":2024}";
Car car2 = gson.fromJson(json, Car.class);
System.out.println(car2.name); // 자동차
System.out.println(car2.age); // 2024
원인 :
Gson은 JSON 형식의 안전성을 높이기 위해 특정 문자를 Unicode 이스케이프 시퀀스로 변환
해결 :
Gson gson = new Gson()
- 기본 Gson 인스턴스를 생성
- 이 경우, 직렬화 시 HTML 특수 문자(예: <, >, &)가 이스케이프되어 출력
- 예를 들어, <는 \u003c로 변환
Gson gson = new GsonBuilder().disableHtmlEscaping().create()
- GsonBuilder를 사용하여 Gson 인스턴스를 생성
- disableHtmlEscaping() 메서드를 호출하면 HTML 특수 문자가 이스케이프되지 않음
- 원래의 문자 그대로 출력 즉, <는 <로 그대로 나타남