Je sais que ce n'est pas la première fois que quelqu'un pose une question sur ce problème, mais avec Retrofit2 je ne trouve pas la bonne solution à mon problème. J'ai suivi un tutoriel en ligne et cela a très bien fonctionné. Lorsque j'ai appliqué le même code à mon propre point de terminaison, j'ai reçu cette exception: java.lang.IllegalStateException: BEGIN_ARRAY attendue mais BEGIN_OBJECT à la ligne 1 colonne 2 chemin $ Je ne sais pas comment résoudre ce problème. J'ai données JSON comme celui-ciImpossible d'obtenir des données JSON avec retrofit 2
[ { "id_toko": "3", "nama_toko": "Toko Ajib", "pesan_toko": "Diskon Gan !!" }]
et comme celui-ci
[ { "id_device": "1", "nama_device": "Samsung Galaxy A5", "jenis_device": "Android" }]
Je veux les analyser à mon application, ceci est mon API de service
public interface ServiceApi {
@GET("show2.php")
Call<List<DataRepo>> toko(
);
@GET("show1.php")
Call<DataSearch> searching(
);
}
Et voici mon modèle:
public class DataRepo {
@SerializedName("id_toko")
int id_toko;
@SerializedName("nama_toko")
String nama_toko;
@SerializedName("pesan_toko")
String pesan_toko;
public int getId_toko() {
return id_toko;
}
public String getNama_toko() {
return nama_toko;
}
public String getPesan_toko() {
return pesan_toko;
}
}
public class DataSearch {
@SerializedName("items")
List<Item> items;
public List<Item> getItems() {
return items;
}
}
public class Item {
@SerializedName("id_device")
int id_device;
@SerializedName("nama_device")
String nama_device;
@SerializedName("jenis_device")
String jenis_device;
public int getId_device() {
return id_device;
}
public String getNama_device() {
return nama_device;
}
public String getJenis_device() {
return jenis_device;
}
}
Ma principale méthode
public class Main {
public static void main(String[] args) {
ServiceApi client = ClientApi.createService(ServiceApi.class);
Call<List<DataRepo>> call = client.toko();
Call<DataSearch> call1 = client.searching();
List<DataRepo> toko = null;
DataSearch searches = null;
List<Item> items = null;
try {
toko = call.execute().body();
searches = call1.execute().body();
for (DataRepo tokos : toko) {
System.out.println(tokos.getNama_toko() + " (" + tokos.getPesan_toko() + ")");
}
System.out.println();
items = searches.getItems();
for (Item item : items){
System.out.println(item.getNama_device() + ", Jenis: " + item.getJenis_device());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
mais je ne peux pas obtenir les données JSON, tout ce que j'ai en journal des erreurs est
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
merci, une question de plus, existe-t-il une méthode pour stocker mes données json en variable et l'utiliser dans une autre fonction? – aruhama
oui vous pouvez, enregistrez-le à partager pref comme ceci >> Gson gson = new Gson(); Chaîne json = gson.toJson (jsonItems); –
stockez ces données pour les préférences partagées et les utiliser dans la fonction que vous voulez –