Android/Android관련 이것 저것..
Gson 라이브러리 사용하기
봄석
2019. 1. 22. 22:18
Gson 라이브러리 사용하기
Gson은 java Object를 JSON 표현으로 변환하는데 사용할 수 있는 java 라이브러리입니다.
JSON 문자열을 java객체로 변환하는데도 사용할 수 있습니다.
주요기능
- 기본형 변환 지원
- 클래스 변환 지원
- 제네릭 지원, List , Map 등 콜렉션을 변환 할 때 유용
- 멀티스레드 지원, Gson 내부 상태를 갖지않아 Thrad-safe이다
- 빠르고 가볍다. Serialize보다 좋음
생성하기
//Java
Gson gson=new Gson()
//Kotlin
var 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 1 gson.toJson("abcd"); // ==> prints "abcd" gson.toJson(new Long(10)); // ==> prints 10 int[] 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); |