-
[Java] Gson 사용하기카테고리 없음 2023. 7. 16. 23:29
출처 : https://beomseok95.tistory.com/124
Gson 라이브러리 사용하기
Gson은 java Object를 JSON 표현으로 변환하는데 사용할 수 있는 java 라이브러리입니다.
JSON 문자열을 java객체로 변환하는데도 사용할 수 있습니다.
주요기능
- 기본형 변환 지원
- 클래스 변환 지원
- 제네릭 지원, List , Map 등 콜렉션을 변환 할 때 유용
- 멀티스레드 지원, Gson 내부 상태를 갖지않아 Thrad-safe이다
- 빠르고 가볍다. Serialize보다 좋음
생성하기//JavaGson gson=new Gson()//Kotlinvar gson=Gson()형변환 (Java->Json)
gson.toJson(short, int, long, float, double, String, Object)
형변환 (Json->java)
gson.fromJson(json문자, javaClaass)
# Maven 의존성 추가
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.4</version>
</dependency>
ex)자바 기본 자료형 변환하기
// (Serialization)Gson gson = new Gson();gson.toJson(1); // ==> prints 1gson.toJson("abcd"); // ==> prints "abcd"gson.toJson(new Long(10)); // ==> prints 10int[] values = { 1 };gson.toJson(values); // ==> prints [1]// (Deserialization)int one = gson.fromJson("1", int.class);Integer one = gson.fromJson("1", Integer.class);Long one = gson.fromJson("1", Long.class);Boolean false = gson.fromJson("false", Boolean.class);String str = gson.fromJson("\"abc\"", String.class);String anotherStr = gson.fromJson("[\"abc\"]", String.class);ex) 자바의 객체 변환 하기
class BagOfPrimitives {private int value1 = 1;private String value2 = "abc";private transient int value3 = 3;BagOfPrimitives() {// no-args constructor}}json 표현식으로 변환해보면
// (Serialization)BagOfPrimitives obj = new BagOfPrimitives();Gson gson = new Gson();String json = gson.toJson(obj);// ==> json is {"value1":1,"value2":"abc"}
ex) 배열예시 ,배열은 []로 표현되어 나오며,어렵지않게 상호변환가능
Gson gson = new Gson();int[] ints = {1, 2, 3, 4, 5};String[] strings = {"abc", "def", "ghi"};// (Serialization)gson.toJson(ints); // ==> prints [1,2,3,4,5]gson.toJson(strings); // ==> prints ["abc", "def", "ghi"]// (Deserialization)int[] ints2 = gson.fromJson("[1,2,3,4,5]", int[].class);// ==> ints2 will be same as ints
ex)컬렉션 예시, 배열과 같이 []로 표현되나 역직렬화 할 때 좀 다른걸 알 수 있다.
Gson gson = new Gson();Collection<Integer> ints = Lists.immutableList(1,2,3,4,5);// (Serialization)String json = gson.toJson(ints); // ==> json is [1,2,3,4,5]// (Deserialization)Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();Collection<Integer> ints2 = gson.fromJson(json, collectionType);