2014-10-14 8 views
4

Square에서 Retrofit을 사용하여 Android 개발에 관한 질문이 있습니다. Response 객체가 실제로 HashMap<String, String> 객체 인 경우를 가정 해 보겠습니다.Retrofit - 응답을 HashMap으로 변환하는 방법?

이 Retrofit 개체에서 HashMap 개체를 가져 오는 방법이 있습니까?

감사합니다.

답변

2

Response 개체는 서버에서 반환 된 응답에 대한 다양한 정보를 포함합니다.

는 응답 본문이 의미하는 경우 HashMap 당신이 success()가 호출 될 때 몸을 구문 분석 할 수 있습니다, 또는 RestAdapter를 구축하고 구문 분석하고 HashMap을 채 웁니다 디시리얼라이저를 쓸 때 형 어댑터를 등록합니다.

private RestAdapter getRestAdapter(){ 
     GsonBuilder gsonBuilder = new GsonBuilder(); 
     gsonBuilder.registerTypeAdapter(new TypeToken<HashMap<String, String>>(){}.getType(), new MyHashMapDeserializer()); 
     RestAdapter.Builder builder = new RestAdapter.Builder(); 
     builder.setClient(new OkClient()); 
     builder.setLogLevel(RestAdapter.LogLevel.FULL); 
     builder.setExecutors(Executors.newCachedThreadPool(), new MainThreadExecutor()); 
     builder.setConverter(new GsonConverter(gsonBuilder.create())); 
     builder.setEndpoint(API_END_POINT_URL); 
     return builder.build(); 
    } 

는 그런 다음 직렬화 로직을 구현 implements JsonDeserializer<HashMap<String, String>>하고 새로운 클래스 (또는 내부 클래스)를 만들 수 있습니다.

K,V 유형을 필요에 맞게 조정하십시오.

+18

Gson은 어떤 구성도없이'Map'을 deserialize 할 것입니다. 그래서 정말로 이것들을 할 필요는 없습니다. 단지 Retrofit 리턴 타입이나'Callback' 타입으로'Map'을 지정하십시오. –

+1

위의 댓글은 답변이어야합니다! –

관련 문제