gson 사용법 + JSON 예제

2015. 12. 22. 20:00Mobile/Android



반응형

gson 사용법 + JSON 예제

참고 : https://github.com/google/gson



예제1 이런 JSON 값이 있다고 가정합니다.


{
      "resMsg": "suc",
      "result": {
          "rec": [
              {
                  "ADDR": "seoul addr1"
              },
              {
                  "ADDR": "seoul addr2"
              },
              {
                  "ADDR": "seoul addr3"
              },
              {
                  "ADDR": "seoul addr4"
              }
          ]
      }
  }



Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonElement rootObejct = parser.parse(json값)
.getAsJsonObject().get("result")
.getAsJsonObject().get("rec");


//배열에 담는것도 가능

Addr[] example = gson.fromJson(rootObejct, Addr[].class);
List<Addr>list = Arrays.asList(example); //이런식으로 가능

for(Addr temp : example){
Log.d("TEST","example=" + temp.getADDR());
}



//바로 타입을 줘서 리스트로 담는것도 가능


Type listType = new TypeToken<List<Addr>>() {}.getType();
List<Addr> example1 = (List<Addr>) gson.fromJson(rootObejct, listType);

for (Addr temp : example1){
Log.d("TEST","example1="+temp.getADDR());
}





Addr.java

public class Addr {
private String ADDR;


public String getADDR() {
return ADDR;
}

public void setADDR(String ADDR) {
this.ADDR = ADDR;
}
}




결과값









예제2 이런 JSON 값이 있다고 가정합니다.




{

"resMsg": "suc",

"result": {

"NAME": GGARI,

"AGE": 20

}

}






//리절트안에내용만 뽑아와서

Gson gson = new GsonBuilder()
.registerTypeAdapter(User.class, new RestDeserializer<>(User.class, "result"))
.create();

User dto = gson.fromJson(json값, User.class);





//Deserialzer 해줍니다. 다양하기 쓰기위해 생성자를 만들어주고 클래스를 받을수 있게하고 또한 키값을 받아오도록 구현했습니다.

ResetDeserialzer.java
public class RestDeserializer<T> implements JsonDeserializer<T> {

private Class<T> mClass;
private String mKey;

public RestDeserializer(Class<T> targetClass, String key) {
mClass = targetClass;
mKey = key;
}

@Override
public T deserialize(JsonElement je, Type type, JsonDeserializationContext jdc)
throws JsonParseException {
JsonElement content = je.getAsJsonObject().get(mKey);
return new Gson().fromJson(content, mClass);

}
}



User.java

import java.io.Serializable;


public class User implements Serializable {


private String NAME;
private String AGE;

public String getNAME() {
return NAME;
}

public void setNAME(String NAME) {
this.NAME = NAME;
}

public String getAGE() {
return AGE;
}

public void setAGE(String AGE) {
this.AGE = AGE;
}
}



잘 응용 하면 편리한 게 많네요.









끝~



반응형