[Android Library] Gson : Json을 Java 객체로 변환
Android/Android 더하기

[Android Library] Gson : Json을 Java 객체로 변환

728x90
반응형

Gson이란?

 

먼저 위키 사전을 보면

위키피디아 설명

 

Json의 자바 오브젝트의 직렬화/역직렬화를 해준다 라고 나와있습니다.

여러워 보이지만 풀어쓰자면

 

Json 형식을 Java객체로 변환시켜주고,

반대인 java 객체를 Json 형식으로 변환시켜주기도하는

자바 라이브러리입니다. 

 

cf) Json은
javaScript에서 객체를 표현하는 방법이지만, 다양한 프로그래밍언어에서 데이터를 주고받기위해(통신) 사용됩니다.  데이터를 표현하는 일종의 데이터의 표준 표현으로, 주로 인터넷상에서 데이터를 주고받을 때 그 자료를 표현하는 방법으로 알려져 있습니다. 

객체는 {}로 표현
배열은 []로 표현
각 속성은 keyvalue로 이루어져있으며 : 으로 구분됨
속성이 여러개인 경우 ,로 구별

 


Gson사용 방법?

gson 라이브러리를 사용하기위해서는 아래 구글 깃허브 공식사이트에 나와있는데로 

github.com/google/gson

 

google/gson

A Java serialization/deserialization library to convert Java Objects into JSON and back - google/gson

github.com

 

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에서 제공하는 JsonParserJsonElement를 이용해서 파싱하고,

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());

 

 

 

 

 

참고

galid1.tistory.com/501

 

 

velog.io/@doyun_lee/Gson-1.-Json%EC%9D%84-Java%EA%B0%9D%EC%B2%B4%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0

 

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