【发布时间】:2020-04-06 16:05:35
【问题描述】:
早安,
我知道有人问过这个问题,并且我发现的其他两个主题确实有所帮助。 我从客户那里得到了我无法控制的回复,所以我需要使用它的格式。
Json 包含来自多个用户的用户信息列表。 这就是我使用 List 而不是 POJO 的原因。 问题如下。 POJO 确实返回没有任何错误,但也没有任何值,并且只有一个值而不是多个值
所以我收集到的是 JSON 的格式不被视为一个列表,而是一个对象。
使用 POSTMAN 作为基准工具来验证 GET 调用是否工作列表中返回的值
我仍然是这方面的菜鸟,因此我们将不胜感激。
邮递员的 JASON 响应如下所示(这就是我意识到检索它的方式可能被视为对象而不是列表的地方。
{
"items": [
{
"userpassword": "TEST123",
"userstatus": "A",
"useremail": "Someperson@domain.com",
"firstname": "Some",
"lastname": "Person"
},
{
"userpassword": "Pass123@",
"userstatus": "C",
"useremail": "personannom@domain.org",
"firstname": "Annom",
"lastname": "Person`"
},
{
"userpassword": "PietIE2#3",
"userstatus": "A",
"useremail": "Piet@pieinthesky.co.uk",
"firstname": "Piet",
"lastname": "Pompies"
},
],....
}
所以看来我需要再钻一层才能得到这些值。
还有一些例子
我的界面类:
import retrofit2.Call;
import retrofit2.http.GET;
public interface JasonPlaceHolder {
@GET("allusers")
Call<UserInfo> getUserInfo();"
//Call<List<UserInfo>> getUserInfo(); WAS
}
我的类来存储信息
public class UserInfo {
private String userpassword;
private String userstatus;
private String useremail;
private String firstname;
private String lastname;
public String getUserpassword() {
return userpassword;
}
public String getUserstatus() {
return userstatus;
}
public String getUseremail() {
return useremail;
}
public String getFirstname() {
return firstname;
}
public String getLastname() {
return lastname;
}
}
然后我在 mainactivity 类中调用 (因为它不再是一个列表,我不能再循环遍历记录了
Retrofit retrofit = new Retrofit.Builder().
baseUrl("http://10..../com/").
addConverterFactory(GsonConverterFactory.create()).
build();
JasonPlaceHolder jasonPlaceHolderApi = retrofit.create(JasonPlaceHolder.class);
Call<UserInfo> call = jasonPlaceHolderApi.getUserInfo();
call.enqueue(new Callback<UserInfo>() {
@Override
public void onResponse(Call<UserInfo> call, Response<UserInfo> response) {
if(!response.isSuccessful()){
textVierResults.setText("code: " + response.code());
return;
}
UserInfo userInfos = response.body();
//for(UserInfo ui:userInfos){
String content = "";
content += "Useremail: " + userInfos.getUseremail() + "\n";
content += "Userpassword: " + userInfos.getUserpassword() + "\n";
content += "Firstname: " + userInfos.getFirstname() + "\n";
content += "Lastname: " + userInfos.getLastname() + "\n";
content += "Userstatus: " + userInfos.getUserstatus() + "\n";
textVierResults.append(content);
// }
}
@Override
public void onFailure(Call<UserInfo> call, Throwable t) {
Toast.makeText(MainActivity.this, "An error occurred", Toast.LENGTH_SHORT).show();
textVierResults.setText(t.getMessage());
}
});
任何人都可以提出解决方案。
【问题讨论】: