마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

gson라이브러리 gson.fromjson질문입니다!

0 추천

안녕하세요 안펍여러분~
질문이 있어서 포스팅합니다!

ANDROID에서 JSON으로 서버에서 시리얼라이즈 된값이

{"data":[{"name":"kim","age","10",~~~~~~}]} 이런식으로 넘어오고

안드로이드에서 GSON라이브러리를 사용하기 위해서

gson.fromjson를 사용하는데요

넘어온 값들의 데이터타입이 달라서 gson.fromjson에 두번째 인자값 이너클래스를 정의할떄 어떻게 해야되나요 ?

넘어온값들이 전부다 스트링이면 그냥 String 변수에 다 넣어주면 되는데 다른타입들은 어떻게 해야할지 모르겠네요...

Gson은 자동으로 변수명이랑 컬럼명 같으면 넣어주는걸로 알고있는데

타입이 다르면 수동으로 다 기술해줘야한다는데 어떻게 하는지를 모르겠습니다 ㅠㅠㅠ 아무리 구글링해서 GSON그냥 기본으로 쓰는법만 나와있고 이건 자세히 없더라고요 ....

 

미노미노도미노 (210 포인트) 님이 2015년 2월 5일 질문

1개의 답변

+1 추천

json 문자열이 

String strJson = {"data":[{"name":"kim","age":"10"}, {"name":"lee","age":"15"}]} ;

이라고 가정할때

 

public class DataDomain{

    @SerializedName("data") private List<MyData> data;

    public List<MyData> getMyData(){

        return data;

    }

    public class MyData{

        @SerializedName("name") private String name;

        @SerializedName("age") private int age;

 

        public String getName(){

            return name;

        }

        public int getAge(){

            return age;

        }

    }

}

 

요렇게 클래스 작성하시고

 DataDomain dataDomain= new Gson().fromJson(strJson , DataDomain.class);

이렇게 변환하시면 됩니다.

이드로이드 (22,930 포인트) 님이 2015년 2월 5일 답변
오류없이 잘되는거 같은데요

mydata클래스의 받아온 네임이 String name에 들어가잖아요 그런데 getname에 return은 왜 String name이 아닌가요 ???

정의 해주신 클래스 파일을 잘 이해 못하겠습니다 ㅠㅠㅠ
질문을 잘 이해 못하겠어요..
json의 name 값이 MyData의 전역 변수은 name에 저장이 되고 getName는 name 변수의 값을 가져오기위한 겟차입니다. json파싱이랑 별 상관 없어요. 그냥 겟차일뿐입니다.

name를 가져오시려면
dataDomain.getMyData().get(리스트 인덱스).getName();
하시면 됩니다.

DataDomain dataDomain= new Gson().fromJson(strJson , DataDomain.class);
하신다음에
for(MyData data : dataDomain.getMyData()){
    String name = data.getName();
    int age = data.getAge();
}

이렇게 해보세요.
말씀하신대로 했는데 nullpointExecption 뜨네요 .. 왜그런지 모르겠어요

다른 클래스에서 dataDomain객체 만들어서

String name = 객체.getMyData().get(0).getName();

이렇게 했는데 이렇게 하는게 아닌가요 ??

저것만 주석 걸면 널포인트도 안뜨고 json String도 로그캣에 잘 찍힙니다
아~~ 알려주신거 참고해서 하다보니까 잘되네요 ! 감사합니다!! 추천 백만번
...