Ciao, sono nuovo nella libreria di Retrofit, sto riscontrando problemi nell'analisi di alcuni json. Ho esaminato alcune altre soluzioni su Stackoverflow ma non ho avuto molta fortuna con il mio problema. Sto cercando di far funzionare un semplice webservice. Ogni suggerimento sarà riconoscente apprezzato .. file diErrore di lancio retrofit Era previsto BEGIN_ARRAY ma era BEGIN_OBJECT
JSON
{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
metodo Richiesta
public void requestEmployeeData(String uri){
RestAdapter adapter = new RestAdapter.Builder().setEndpoint(ENDPOINT).build();
EmployeesAPI employeesAPI =adapter.create(EmployeesAPI.class);
employeesAPI.getEmployees(new Callback<List<Employees.employeesclass>>() {
@Override
public void success(List<Employees.employeesclass> employees, Response response) {
List<String> names = new ArrayList<String>();
Log.v("nas", "The Employees Webservice Success" + response);
}
@Override
public void failure(RetrofitError retrofitError) {
Log.v("nas", "The Employees Webservice Failed " + retrofitError);
}
});
}
Employees.java
public class Employees {
// List<String> listOfStrings = new ArrayList<String>();
@SerializedName(value="employees")
public List<Employees> employees;
public void setEmployees(List<Employees> employees) {
this.employees = employees;
}
public static class employeesclass {
String firstName;
String lastName;
@Override
public String toString() {
return (firstName + " " + lastName);
}
}
}
EmployeesAPI.java
public interface EmployeesAPI {
@GET("/get_names.json")
public void getEmployees(Callback<List<Employees.employeesclass>> response);
}
le im errore preliminari è
The Employees Webservice Failed retrofit.RetrofitError: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
Capisco l'errore sta dicendo i dati è un oggetto e dovrebbe iniziare con una matrice, ma i cant lavorare fuori .. Grazie
anche rinominare 'I dipendenti/employeesclass' a qualcosa come' EmployeesWrapper/Employee' per esempio dovrebbe rendere più facile da capire . – Salem
Grazie. che ha funzionato .. il servizio web un successo :-) – n4zg
grazie che ha funzionato per me – souttab