Ich bin ziemlich neu in der Android-Entwicklung und erstelle eine App, für die ich den Zomato verwenden muss Rest-API Ich verwende die Koush ION-Bibliothek https://github.com/koush/ion zum Senden der http-Anfrage und zum Empfangen einer Antwort. Zur Verwendung dieser Bibliothek erstelle ich einfach eine Java-Modellklasse mit den Schlüsseln als Java-Instanzvariablen und rufe diese Codezeile auf.Android-Modell für die JSON-Analyse zeigt ClassCastException: com.google.gson.JsonObject kann nicht in com.google.gson.JsonArray umgewandelt werden
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();
}
});
}
}
});
}
Gemäß der Zomato API-Dokumentation wird die Antwort in etwa so aussehen -
{"nearby_restaurants": {
"1": {
"restaurant": {
}
},
"2": {
"restaurant": {
}
},
"3": {
"restaurant": {
}
},
"4": {
"restaurant": {
}
},
"5": {
"restaurant": {
}
},
"6": {
"restaurant": {
}
},
"7": {
}
},
"8": {
"restaurant": {
}
},
"9": {
"restaurant": {
}
}
Und meine RestaurantZomato Klasse sieht wie folgt aus -
public class RestaurantsZomato {
public NearbyRestaurants nearby_restaurants;
public static class NearbyRestaurants {
public List<RestaurantDetails> restaurant;
}}
Und RestaurantDetails Klasse hat im Inneren alles das "Restaurant" -Tag. Meine Frage, wie man "1", "2", "3" usw. darstellt, das in der JsonResponse in meiner Modelklasse vorhanden ist.
Es tut mir leid, wenn diese Frage dumm ist. Wie gesagt, ich bin neu in der Android-Entwicklung und alle Ressourcen, die mich in die richtige Richtung weisen, werden sehr geschätzt!
Add Gson 2.2.3.jar Bibliothek in Ihrem Projekt –
@DaminiMehra verwenden Sie für Ihren Kommentar danken. Allerdings hat meine Klasse import com.google.gson.Gson; importieren com.google.gson.JsonArray; importieren com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; bedeutet das nicht, dass die Bibliothek bereits vorhanden ist? –