2015. 12. 22. 20:00ㆍMobile/Android
gson 사용법 + JSON 예제
참고 : https://github.com/google/gson
예제1 이런 JSON 값이 있다고 가정합니다.
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;
}
}
잘 응용 하면 편리한 게 많네요.
끝~
'Mobile > Android' 카테고리의 다른 글
G3 마시멜로 업데이트 방법 (1) | 2016.01.11 |
---|---|
안드로이드 GsonFormat (0) | 2016.01.07 |
android studio code templates & copyright symbol (0) | 2015.11.05 |
안드로이드 6.0 마시멜로 업데이트 및 개발자 정보 (0) | 2015.11.01 |
multidex android studio (0) | 2015.10.30 |