2 回答
TA贡献1895条经验 获得超7个赞
正如评论中所解释的,您的问题是由于 API 调用返回一个 Person 数组而引起的,而您希望收到一个 Person 对象。这就是为什么错误指出Expected BEGIN_OBJECT but was BEGIN_ARRAY
您可以:
A) 更改您的 php 代码以返回一个对象而不是数组。
或者
B) 按如下方式更改 Java 代码:
API接口
public interface ApiInterface {
@GET("test.php")
Call<List<Person>> getPerson(@Query("name") String keyword);
}
主要活动
public void personList(String key) {
apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
Call<List<Person>> call = apiInterface.getPerson(key);
call.enqueue(new Callback<List<Person>>() {
@Override
public void onResponse(Call<List<Person>> call, Response<List<Person>> response) {
// Check that the list of objects is not empty before trying to read first entry
if (!response.body.isEmpty()) {
// Take the first entry in the List
Person person = response.body().get(0);
nameText.setText(person.getName());
System.out.println("Name : " + person.getName());
}
}
@Override
public void onFailure(Call<List<Person>> call, Throwable t) {
Log.e("onFailure", t.toString());
}
});
}
最后,我也认为@Query应该改为@Field
TA贡献1824条经验 获得超6个赞
我不懂PHP,但是jsonsyntaxException是由JSON解析错误引起的。你可以尝试在Android中打印jsonstr然后进行转换。我希望它能帮助你
@GET("test.php")
调用 getPerson(@Query("name") String 关键字);
- 2 回答
- 0 关注
- 96 浏览
添加回答
举报