728x90
반응형
Gson이란?
먼저 위키 사전을 보면
Json의 자바 오브젝트의 직렬화/역직렬화를 해준다 라고 나와있습니다.
여러워 보이지만 풀어쓰자면
Json 형식을 Java객체로 변환시켜주고,
반대인 java 객체를 Json 형식으로 변환시켜주기도하는
자바 라이브러리입니다.
cf) Json은
javaScript에서 객체를 표현하는 방법이지만, 다양한 프로그래밍언어에서 데이터를 주고받기위해(통신) 사용됩니다. 데이터를 표현하는 일종의 데이터의 표준 표현으로, 주로 인터넷상에서 데이터를 주고받을 때 그 자료를 표현하는 방법으로 알려져 있습니다.
객체는 {}로 표현
배열은 []로 표현
각 속성은 key 와 value로 이루어져있으며 : 으로 구분됨
속성이 여러개인 경우 ,로 구별
Gson사용 방법?
gson 라이브러리를 사용하기위해서는 아래 구글 깃허브 공식사이트에 나와있는데로
Gradle에 dependencies를 추가시켜줍니다.
dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
}
Gson 활용예제?
JSON을 java 코드로 만들기
Gson gson = new Gson()
JsonObject jsonObj = new JsonObject();
jsonObj.addProperty("name", "jslee");
jsonObj.addProperty("age", 33);
jsonObj.addProperty("gender", "female");
String json = gson.toJson(object);
JsonObject로 json을 만들수 있습니다.
문자열 JSON을 파싱하기
String json = "{\"name\":\"jslee\",\"age\":33,\"gender\":\"femal\"}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(json);
String name = element.getAsJsonObject().get("name").getAsString();
int age = element.getAsJsonObject().get("age").getAsInt();
String gender = element.getAsJsonObject().get("gender").getAsInt();
json에서 제공하는 JsonParser, JsonElement를 이용해서 파싱하고,
getAsJsonObject()를 이용해서 원하는 타입을 이용해서 값을 받아오면 됩니다.
JSON--> custom객체
String json = "{\"name\":\"kim\",\"age\":20,\"gender\":\"M\"}";
Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);
Gson gson = new Gson(); 로 인스턴스를 만들고
gson.toJson()을 사용해서 첫번째 인자로 객체를 지정해주면 됩니다.
custom객체 --> JSON
Person person = new Person();
person.setName("jslee");
person.setAge(20);
person.setGender("femal");
Gson gson = new Gson();
String json = gson.toJson(person);
gson.fromJson()을 사용하면 되고 첫번째 인자로 문자열, 두번째 인자는 문자열을 매핑할 클래스를 지정해주면 됩니다.
Gson은 json을 java 객체 어떤것과도 변환이 가능합니다.
Map <--> JSON
Gson gsonObj = new Gson();
Map<String, String> inputMap = new HashMap<String, String>();
inputMap.put("name", "makesomething");
inputMap.put("blog", "https://web-inf.tistory.com");
// MAP -> JSON 예제
String jsonStr = gsonObj.toJson(inputMap);
System.out.println("MAP -> JSON 예제 : " + jsonStr);
// MAP -> JSON 예제
Map map = gsonObj.fromJson(jsonStr, Map.class);
System.out.println("JSON -> MAP 예제 : " + map.toString());
참고
728x90
반응형
'Android > Android 더하기' 카테고리의 다른 글
MVVM 패턴 (0) | 2021.04.22 |
---|---|
[Android Library] OkHttp : Http OK?? OK!! (0) | 2021.04.19 |
REST API : HTTP 모범생 (0) | 2021.04.16 |
HTTP 원리 (0) | 2021.04.15 |
의존성 주입(DependencyInjection) - Koin/Dagger2 /Hilt (0) | 2021.04.09 |