Retrofit werfen Fehler Erwartet BEGIN_ARRAY aber war BEGIN_OBJECT
Hallo, ich bin neu in der Retrofit-Bibliothek, ich habe Probleme beim Parsen einige json. Ich habe mir bei einigen anderen Lösungen, die auf Stackoverflow, aber nicht viel Glück mit meinem problem. im Versuch, einen einfachen webservice zu arbeiten. Anregungen wäre dankbar geschätzt ..
Json-Datei
{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
Request-Methode
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);
}
den Fehler im immer ist
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 $
Verstehe ich die Fehlermeldung sagt, das Daten ist ein Objekt und es sollte mit einem array, aber ich kann nicht arbeiten, es out.. Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mischen Sie
Employees
undemployeesclass
Klassen. Versuchen Sie, diese stattdessen zu verwenden:Dann ändern Sie Ihre Schnittstelle und
requestEmployeeData
Methode entsprechendEmployees/employeesclass
etwas wieEmployeesWrapper/Employee
zum Beispiel sollte es einfacher zu verstehen.