我對Android開發相當陌生,我創建的應用程序需要我使用Zomato Rest API。我正在使用Koush ION庫https://github.com/koush/ion發送http請求並接收響應。爲了使用這個庫,我只需創建一個模型java類,其中的鍵爲java實例變量並調用這一行代碼。JSON解析的Android模型顯示ClassCastException:com.google.gson.JsonObject無法轉換爲com.google.gson.JsonArray
Ion.with(getActivity())
.load("https://developers.zomato.com/api/v2.1/geocode?lat=25.12819&lon=55.22724")
.setHeader("user-key",my-user-key)
.asJsonArray()
.setCallback(new FutureCallback<JsonArray>() {
@Override
public void onCompleted(Exception e, JsonArray result) {
if (e != null) {
Log.d("FoodFragment", "Error loading food"+e.toString());
Toast.makeText(getActivity(), "error loading food", Toast.LENGTH_LONG).show();
return;
}
else{
Log.d("FoodFragment", "Size= " + result.size() + "; " + result.toString());
sTrips = (List<RestaurantsZomato>) new Gson().fromJson(result.toString(), new TypeToken<List<RestaurantsZomato>>() {
}.getType());
adapter = new RestaurantAdapter(sTrips);
recyclerView.setAdapter(adapter);
mSwipeRefreshLayout.setRefreshing(false);
((RestaurantAdapter) adapter).setOnItemClickListener(new RestaurantAdapter.MyClickListener() {
@Override
public void onItemClick(int position, View v) {
Toast.makeText(getActivity(), "Item Clicked", Toast.LENGTH_LONG).show();
}
});
}
}
});
}
由於每Zomato API文檔,響應將是這個樣子 -
{"nearby_restaurants": {
"1": {
"restaurant": {
}
},
"2": {
"restaurant": {
}
},
"3": {
"restaurant": {
}
},
"4": {
"restaurant": {
}
},
"5": {
"restaurant": {
}
},
"6": {
"restaurant": {
}
},
"7": {
}
},
"8": {
"restaurant": {
}
},
"9": {
"restaurant": {
}
}
而且我RestaurantZomato類看起來是這樣的 -
public class RestaurantsZomato {
public NearbyRestaurants nearby_restaurants;
public static class NearbyRestaurants {
public List<RestaurantDetails> restaurant;
}}
而且RestaurantDetails類有裏面的一切「餐廳」標籤。我的問題如何表示在我的Model類的JsonResponse中存在的「1」,「2」,「3」等。
對不起,如果這個問題很蠢。正如我所說我是Android開發的新手,並且任何能夠指引我朝着正確方向的資源都將非常感謝!
附加GSON 2.2.3.jar庫項目 –
@DaminiMehra謝謝你的評論。然而我的課有import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken;這是否意味着圖書館已經存在? –