Android 改造错误应为BEGIN_数组,但BEGIN_对象更改为对象对我有效
你好 我知道有人问过这个问题,而我发现的另外两个话题在某种程度上确实有所帮助。 我从客户那里得到了一个我无法控制的回复,所以它的格式是我需要处理的 Json包含来自多个用户的用户信息列表。 这就是我使用列表而不是POJO的原因。 问题如下。POJO不会返回任何错误,但也不会返回任何值,并且只返回一个值而不是多个值 因此,我收集的是JSON的格式,它不被视为列表,而是对象 使用POSTMAN作为基准工具来验证GET调用是否有效以及列表中返回的值 我仍然是这方面的新手,所以任何帮助都将不胜感激 来自postman的JASON回复如下(这就是我意识到检索它的方式可能被视为对象而不是列表)Android 改造错误应为BEGIN_数组,但BEGIN_对象更改为对象对我有效,android,retrofit2,Android,Retrofit2,你好 我知道有人问过这个问题,而我发现的另外两个话题在某种程度上确实有所帮助。 我从客户那里得到了一个我无法控制的回复,所以它的格式是我需要处理的 Json包含来自多个用户的用户信息列表。 这就是我使用列表而不是POJO的原因。 问题如下。POJO不会返回任何错误,但也不会返回任何值,并且只返回一个值而不是多个值 因此,我收集的是JSON的格式,它不被视为列表,而是对象 使用POSTMAN作为基准工具来验证GET调用是否有效以及列表中返回的值 我仍然是这方面的新手,所以任何帮助都将不胜感激 来自
{
"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
}
然后我在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());
}
});
reformation-reformation=new-reformation.Builder()。
基本URL(“http://10..../com/").
addConverterFactory(GsonConverterFactory.create())。
build();
JasonPlaceHolder JasonPlaceHolder API=reformation.create(JasonPlaceHolder.class);
Call Call=jasonPlaceHolderApi.getUserInfo();
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
如果(!response.issusccessful()){
textVierResults.setText(“代码:+response.code());
返回;
}
UserInfo userInfos=response.body();
//用于(用户信息用户界面:用户信息){
字符串内容=”;
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(内容);
// }
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Toast.makeText(MainActivity.this,“发生错误”,Toast.LENGTH_SHORT.show();
textVierResults.setText(t.getMessage());
}
});
有人能提出解决办法吗
因此,我似乎需要再钻一个层次来获得这些值
你可能是对的,你现在可能需要这样的东西:
class SomeClass {
ArrayList<UserInfo> info;
}
class-SomeClass{
ArrayList信息;
}
现在你明白你的反应了
因此,我似乎需要再钻一个层次来获得这些值
你可能是对的,你现在可能需要这样的东西:
class SomeClass {
ArrayList<UserInfo> info;
}
class-SomeClass{
ArrayList信息;
}
现在你明白你的反应了
创建新的模型类项传递并将其替换为传递的UserInfo
JasonPlaceHolder和改装类
公共类项目{
清单项目;
公共列表getitems(){
退货项目;
}
}
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
如果(!response.issusccessful()){
textVierResults.setText(“代码:+response.getitems());
返回;
}
创建新的模型类项传递并将其替换为传递的UserInfo
JasonPlaceHolder和改装类
公共类项目{
清单项目;
公共列表getitems(){
退货项目;
}
}
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
如果(!response.issusccessful()){
textVierResults.setText(“代码:+response.getitems());
返回;
}
如果要手动解析json数据,以到达json树中的列表节点
添加一个JSONResponse类,该类将表示返回的原始JSON,您可以使用getItems方法获取userInfos数组,该方法将返回JSON对象中“items”键的值(在本例中,将返回一个UserInfo对象数组)
}
使Get方法返回一个JSONResponse对象,如下所示
@GET("allusers")
Call<JSONResponse> getUserInfo();"
JSONResponse jsonResponse = response.body();
userInfos= new ArrayList<>(Arrays.asList(jsonResponse.getItems()));
String content = "";
for(UserInfo ui:userInfos){
content += "Useremail: " + ui.getUseremail() + "\n";
content += "Userpassword: " + ui.getUserpassword() + "\n";
content += "Firstname: " + ui.getFirstname() + "\n";
content += "Lastname: " + ui.getLastname() + "\n";
content += "Userstatus: " + ui.getUserstatus() + "\n";
}
textVierResults.append(content);
@GET(“诱惑者”)
调用getUserInfo();”
最后,在onResponse中,从JSONResponse对象获取UserInfo列表,如下所示
@GET("allusers")
Call<JSONResponse> getUserInfo();"
JSONResponse jsonResponse = response.body();
userInfos= new ArrayList<>(Arrays.asList(jsonResponse.getItems()));
String content = "";
for(UserInfo ui:userInfos){
content += "Useremail: " + ui.getUseremail() + "\n";
content += "Userpassword: " + ui.getUserpassword() + "\n";
content += "Firstname: " + ui.getFirstname() + "\n";
content += "Lastname: " + ui.getLastname() + "\n";
content += "Userstatus: " + ui.getUserstatus() + "\n";
}
textVierResults.append(content);
JSONResponse JSONResponse=response.body();
userInfos=newarraylist(Arrays.asList(jsonResponse.getItems());
字符串内容=”;
用于(用户信息用户界面:用户信息){
content++=“Useremail:”+ui.getUseremail()+“\n”;
content+=“Userpassword:”+ui.getUserpassword()+“\n”;
content+=“Firstname:”+ui.getFirstname()+“\n”;
content+=“Lastname:”+ui.getLastname()+“\n”;
content++=“Userstatus:”+ui.getUserstatus()+“\n”;
}
textVierResults.append(内容);
如果要手动解析json数据,以到达json树中的列表节点
添加一个JSONResponse类,该类将表示返回的原始JSON,您可以使用getItems方法获取userInfos数组,该方法将返回JSON对象中“items”键的值(在本例中,将返回一个UserInfo对象数组)
}
使Get方法返回一个JSONResponse对象,如下所示
@GET("allusers")
Call<JSONResponse> getUserInfo();"
JSONResponse jsonResponse = response.body();
userInfos= new ArrayList<>(Arrays.asList(jsonResponse.getItems()));
String content = "";
for(UserInfo ui:userInfos){
content += "Useremail: " + ui.getUseremail() + "\n";
content += "Userpassword: " + ui.getUserpassword() + "\n";
content += "Firstname: " + ui.getFirstname() + "\n";
content += "Lastname: " + ui.getLastname() + "\n";
content += "Userstatus: " + ui.getUserstatus() + "\n";
}
textVierResults.append(content);
@GET(“诱惑者”)
调用getUserInfo();”
最后,在onResponse中,从JSONResponse对象获取UserInfo列表,如下所示
@GET("allusers")
Call<JSONResponse> getUserInfo();"
JSONResponse jsonResponse = response.body();
userInfos= new ArrayList<>(Arrays.asList(jsonResponse.getItems()));
String content = "";
for(UserInfo ui:userInfos){
content += "Useremail: " + ui.getUseremail() + "\n";
content += "Userpassword: " + ui.getUserpassword() + "\n";
content += "Firstname: " + ui.getFirstname() + "\n";
content += "Lastname: " + ui.getLastname() + "\n";
content += "Userstatus: " + ui.getUserstatus() + "\n";
}
textVierResults.append(content);
JSONResponse JSONResponse=response.body();
userInfos=newarraylist(Arrays.asList(jsonResponse.getItems());
字符串内容=”;
用于(用户信息用户界面:用户信息){
content++=“Useremail:”+ui.getUseremail()+“\n”;
content+=“Userpassword:”+ui.getUserpassword()+“\n”;
content+=“Firstname:”+ui.getFirstname()+“\n”;
content+=“Lastname:”+ui.getLastname()+“\n”;
content+=“Userstatus:”+ui.getUser