日安,
我知道这个问题已经被问到了,我找到的另外两个话题在某一个点之前确实有所帮助。我有一个来自客户机的响应,但我无法控制,所以它的格式是我需要处理的。
Json包含来自多个用户的用户信息列表。这就是我使用列表而不是POJO的原因。问题如下。POJO返回时没有任何错误,但也没有任何值,并且只有一个值而不是多个值
来自postman的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;
}
}
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());
}
});
所以看来我需要再钻一层才能得到值。
你可能是对的,你现在可能需要这样的东西:
class SomeClass {
ArrayList<UserInfo> info;
}
现在你要抓住你的反应。
我如何使用改造来解析这个?我得到错误BEGIN_OBJECT但却是BEGIN_ARRAY 现在,我是这样分析的… 下面是adapter类 下面是接口RetroInterface.class 这是我在主要活动中的称呼 下面是json响应
改装建造者: 插件创建的数据类不对吗?或者我的服务不应该返回列表?我尝试过返回一个简单的BaseResponse对象,但这也不起作用。
有改装API 附注。很抱歉可能的语法错误。
拜托,我有麻烦了。我想获取web api()上的所有实体
这是我的界面: 这是我希望将收到的数据转换到的县数据类: ...Getters和setters...
我做了一个功能:输入身份证号码,点击提交按钮,然后获得身份证的基本信息。 我使用的模型是: 我使用的改装界面: 当我输入正确的身份证号码时,一切正常。返回的结果是: 一切运作良好。 然而,当我输入不正确的身份证号码时,不好的事情发生了: 返回的结果是: 我怎样才能修复这些漏洞?