android - 使用改造获取对象数组时出现错误无法解析方法
问题描述
我想获取对象数组(JSON),然后获取一些值。
我已经尝试过像这里这样的所有事情: 如何使用 gson/retrofit 获取对象数组?
但我有来自 Android Studio 的提示错误,比如Cannot resolve method 'getId()'
JSON:
[{
"id": "551454",
"rights": ["auth", "objects-prepaid-get"],
"services": [{
"service_id": "103",
"options": {
"sum": 0
},
"dismisable": 0
}],
"date_activate": "2017-11-11",
"period": {
"date_action": "2019-03-29",
"after": 0
},
"ast": {
"id": "3",
"services": [{
"service_id": "4",
"dismisable": 0
}, {
"service_id": "5",
"dismisable": 0
}]
},
"ast_s": {
"id": "82",
"services": [{
"service_id": "4",
"dismisable": 0
}, {
"service_id": "5",
"dismisable": 0
}],
"date": "2019-03-29",
"dissmissable": 1
}
}]
我在活动中做什么:
onCreate(){
...
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
SomeAPI userClient2 = retrofit.create(SomeAPI.class);
getUserInfo();
}
private void getUserInfo() {
token = AppPreferences.getStringFromSh(getApplicationContext());
Call<List<User>> call2 = userClient2.getInfoUser("Bearer " + token);
call2.enqueue(new Callback<List<User>>() {
@Override
public void onResponse(Call<List<User>> call, Response<List<User>> response) {
if (response.code() == 200){
id = response.body().getId(); //id - List<Integer>
tvAccount.append(" " + id);
}
else {
Toast.makeText(UserProfile.this, "Err while loading", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<List<User>> call, Throwable t) {
Toast.makeText(UserProfile.this, "error!", Toast.LENGTH_SHORT).show();
}
});
}
在界面中我有:
@GET("objects")
Call<List<User>> getInfoUser(@Header("Authorization") String token);
在 User.class 我有:
public class User {
private List<Integer> id;
public List<Integer> getId(){
return id;
}
public void setId(List<Integer> id){
this.id = id;
}
}
我的代码有什么问题?我哪里做错了?
升级版:
试过:
id = response.body().get(0).getId();
tvAccount.append(" " + id);
得到:
Expected BEGIN_ARRAY but was StRING at line 1 column 9 path $[0].id
解决方案
似乎response.body()
返回 aList<User>
所以您必须访问列表中的一项。例子:
response.body().get(0).getId();
推荐阅读
- amazon-web-services - 捕获谁更新了我在 AWS 中的 dynamodb 记录
- java - 将 byte[8] 转换为 long 的最快方法
- javascript - 使用来自 Django 的 JsonResponse 更新 DataTable 无法正常工作
- shell - 不要在抽屉中显示标题 FlyoutItem 外壳 - xamarin 表单
- javascript - 如何等待构造函数完成?
- javascript - 为什么方法中未定义对象数据?
- javascript - 来自外部文件的 JavaScript 调用函数给出 .is not a fuction 错误,我该如何解决?
- nativescript - 错误:在非 ES5 类上调用 getInternalNameOfClass():预期 RadListViewComponent 具有内部类声明
- json - 如何使用 jq 从 json 中输出所有键和值?
- python - 如何创建仍然将垃圾收集到范围之外的循环引用?