2017-01-25 8 views
2

私は動的JSONを持っていますが、ここに例があります:http://pastebin.com/QMWRZTrDRetrofitで動的JSONを解析する方法は?

私はRetrofitでどのように解析できますか?

"5411"や "5412"のような動的なフィールドがあるので、私はPOJOクラスの生成に失敗しました。

EDIT

最初の値が整数常にあるので、私は、マップを用いて、それを解決し、そして第二には、オブジェクトのリストです。

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

POJOの代わりに 'Map'を使うことができます。 – 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

ハバナDusane、悲しいcu probati :) – Zookey

+0

は、オレンジ色のオレンジ、オレンジ色のオレンジ、オレンジ色のオレンジ、オレンジ色のオレンジ、ポーズドラフ私はhvala! – Zookey

+0

他の人のダウンロードはこちらから –

関連する問題