Je suis assez nouveau pour le développement Android et je crée une application qui me demande de consommer le Zomato Reste l'API. J'utilise la bibliothèque KONH ION https://github.com/koush/ion pour envoyer la requête http et recevoir une réponse. Pour utiliser cette bibliothèque, je crée simplement une classe java modèle avec les clés en tant que variables d'instance Java et j'appelle cette ligne de code.Modèle Android pour les expositions d'analyse JSON ClassCastException: com.google.gson.JsonObject ne peut pas être casté en 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();
}
});
}
}
});
}
Selon la documentation de l'API Zomato, la réponse ressemblera à quelque chose comme ça -
{"nearby_restaurants": {
"1": {
"restaurant": {
}
},
"2": {
"restaurant": {
}
},
"3": {
"restaurant": {
}
},
"4": {
"restaurant": {
}
},
"5": {
"restaurant": {
}
},
"6": {
"restaurant": {
}
},
"7": {
}
},
"8": {
"restaurant": {
}
},
"9": {
"restaurant": {
}
}
Et ma classe RestaurantZomato ressemble à ceci -
public class RestaurantsZomato {
public NearbyRestaurants nearby_restaurants;
public static class NearbyRestaurants {
public List<RestaurantDetails> restaurant;
}}
classe
Et RestaurantDetails a tout à l'intérieur le tag "restaurant". Ma question comment représenter "1", "2", "3" etc qui est présent dans le JsonResponse dans ma classe Model.
Je suis désolé si cette question est stupide. Comme je l'ai dit je suis nouveau sur le développement Android et toutes les ressources qui me pointent dans la bonne direction seront très appréciées!
add gson bibliothèque 2.2.3.jar dans votre projet –
@DaminiMehra Merci pour votre commentaire. Cependant, ma classe a import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; cela ne signifie-t-il pas que la bibliothèque est déjà présente? –