2017-01-25 1 views
2

여기에 동적 JSON이 있습니다. 예 : http://pastebin.com/QMWRZTrD역기능 JSON과 Retrofit을 구문 분석하는 방법은 무엇입니까?

내가 Retrofit으로 어떻게 파싱 할 수 있습니까? 나는 "5411"과 "5412"와 같은 동적 필드가 있기 때문에

나는, POJO 클래스를 생성하지 못했습니다.

편집은 : 첫 번째 값은 항상 정수이기 때문에

나는지도를 사용하여 해결하고, 객체 목록이 두 번째이다.

@FormUrlEncoded 
@POST("history.php") 
Observable<Map<Integer, List<Vehicle>>> getHistory(@Field("uredjaji") String vehicleId, @Field("startDate") String startDATE, @Field("endDate") 
+0

당신은 POJO 대신'지도'를 사용할 수 있습니다. – Saurabh

+0

답변을 게시하십시오. 귀하의 아이디어로 해결해 주셨습니다. – Zookey

답변

3

당신은 직렬화하고 임의의 키의 경우에는 직렬화하는 Map를 사용할 수 있습니다. Observable<Map<Integer, List<YourObject>>>

2

당신은 당신이 당신의 개조 개체를 만드는 곳으로 스칼라 컨버터 공장을 추가해야 할 일을

Call<String> method(@Path(..)...); 

그리고 대한처럼 RestApi 인터페이스에서 문자열을 반환 개조 API 호출을받을 수 있습니다.

compile 'com.squareup.retrofit2:converter-scalars:2.1.0' 

을 그리고 추가 : 먼저 가져올 필요가

Retrofit retrofit = new Retrofit.Builder() 
    .addConverterFactory(ScalarsConverterFactory.create()) 
    .addConverterFactory(GsonConverterFactory.create()) 
    .baseUrl("https://your.base.url/") 
    .build(); 

을 그리고 onResponse 또한

public void onResponse(Call<String> call, Response<String> response) { 
    if (response.isSuccessful()) { 
     Type mapType = new TypeToken<Map<String,List<SomeClass>>() {}.getType(); // define generic type 
     Map<String,List<SomeClass>> result= gson.fromJson(response.body(), mapType); 
    } else { 

    } 
} 

에, 그것은 개조에 큰 자습서를 가지고 this site 체크 아웃 .

+0

Hvala Dusane, 슬픈 세제곱 probati : – Zookey

+0

Rijesio 샘 NA osnovu MAPE, iako JE ovaj하기 Tvoj nacin zanimjiv, NISAM znao 다 moze OVAKO. 포즈 난 내가 할아버지! – Zookey

+0

cemu NA NEMA, JA 샘 mislio 다 nece moci 다 deserijalizuje automatski PA 샘 TI zato rekao 다 treba 다 vrati 문자열 펜실바니아입니까 다 조지아 deserijalizujes, 알리 도브 아코 라디에이터 automatski :) –

관련 문제