n4z*_*4zg 7 android json gson retrofit
嗨,我是Retrofit库的新手,我在解析一些json时遇到问题.我已经在Stackoverflow上看了一些其他的解决方案,但我的问题没有太多运气.我试图让一个简单的Web服务工作.任何建议将不胜感激..
Json文件
{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
Run Code Online (Sandbox Code Playgroud)
请求方法
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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
EmployeesAPI.java
public interface EmployeesAPI {
@GET("/get_names.json")
public void getEmployees(Callback<List<Employees.employeesclass>> response);
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
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 $
Run Code Online (Sandbox Code Playgroud)
我理解错误是说数据是一个对象,它应该从一个数组开始,但我不能解决它..谢谢
你是混音Employees和employeesclass课程.尝试使用此代替:
public class Employees {
@SerializedName(value="employees")
public List<employeesclass> employees;
public void setEmployees(List<employeesclass> employees) {
this.employees = employees;
}
// employeesclass definition
}
Run Code Online (Sandbox Code Playgroud)
然后相应地更改您的界面和requestEmployeeData方法
public interface EmployeesAPI {
@GET("/get_names.json")
public void getEmployees(Callback<Employees> response);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12717 次 |
| 最近记录: |