改造失败(onFailure处方法被调用):预期BEGIN_OBJECT但BEGIN_ARRAY位于第1周的列1114路径$ .og_user_node
问题描述:
MY POJO类
package com.webnoo.questin.controllers.networks.pojo;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Profile {
@SerializedName("uid")
@Expose
private String uid;
@SerializedName("name")
@Expose
private String name;
@SerializedName("theme")
@Expose
private String theme;
@SerializedName("signature")
@Expose
private String signature;
@SerializedName("signature_format")
@Expose
private String signature_format;
@SerializedName("created")
@Expose
private String created;
@SerializedName("access")
@Expose
private String access;
@SerializedName("login")
@Expose
private String login;
@SerializedName("status")
@Expose
private String status;
@SerializedName("timezone")
@Expose
private String timezone;
@SerializedName("language")
@Expose
private String language;
@SerializedName("picture")
@Expose
private Picture picture;
@SerializedName("data")
@Expose
private Data data;
@SerializedName("uuid")
@Expose
private String uuid;
@SerializedName("roles")
@Expose
private Roles roles;
@SerializedName("og_user_node")
@Expose
private Og_user_node og_user_node;
@SerializedName("field_first_name")
@Expose
private Field_first_name field_first_name;
@SerializedName("field_last_name")
@Expose
private Field_last_name field_last_name;
@SerializedName("field_education")
@Expose
private Field_education field_education;
@SerializedName("field_user_experience")
@Expose
private Field_user_experience field_user_experience;
@SerializedName("field_projects")
@Expose
private Field_projects field_projects;
@SerializedName("field_merits_awards")
@Expose
private Field_merits_awards field_merits_awards;
@SerializedName("field_publications")
@Expose
private Field_publications field_publications;
@SerializedName("field_volunteering")
@Expose
private Field_volunteering field_volunteering;
@SerializedName("field_personal_information")
@Expose
private Field_personal_information field_personal_information;
@SerializedName("field_additional_skills")
@Expose
private Field_additional_skills field_additional_skills;
@SerializedName("field_company_description")
@Expose
private List<Object> field_company_description = null;
@SerializedName("field_i_am_a")
@Expose
private Field_i_am_a field_i_am_a;
@SerializedName("field_groups_logo")
@Expose
private List<Object> field_groups_logo = null;
@SerializedName("field_user_avatar")
@Expose
private Field_user_avatar field_user_avatar;
@SerializedName("metatags")
@Expose
private Metatags metatags;
@SerializedName("rdf_mapping")
@Expose
private Rdf_mapping rdf_mapping;
@SerializedName("comment_notify_settings")
@Expose
private Comment_notify_settings comment_notify_settings;
@SerializedName("realname")
@Expose
private String realname;
@SerializedName("foo")
@Expose
private String foo;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTheme() {
return theme;
}
public void setTheme(String theme) {
this.theme = theme;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public String getSignature_format() {
return signature_format;
}
public void setSignature_format(String signature_format) {
this.signature_format = signature_format;
}
public String getCreated() {
return created;
}
public void setCreated(String created) {
this.created = created;
}
public String getAccess() {
return access;
}
public void setAccess(String access) {
this.access = access;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getTimezone() {
return timezone;
}
public void setTimezone(String timezone) {
this.timezone = timezone;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public Picture getPicture() {
return picture;
}
public void setPicture(Picture picture) {
this.picture = picture;
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public Roles getRoles() {
return roles;
}
public void setRoles(Roles roles) {
this.roles = roles;
}
public Og_user_node getOg_user_node() {
return og_user_node;
}
public void setOg_user_node(Og_user_node og_user_node) {
this.og_user_node = og_user_node;
}
public Field_first_name getField_first_name() {
return field_first_name;
}
public void setField_first_name(Field_first_name field_first_name) {
this.field_first_name = field_first_name;
}
public Field_last_name getField_last_name() {
return field_last_name;
}
public void setField_last_name(Field_last_name field_last_name) {
this.field_last_name = field_last_name;
}
public Field_education getField_education() {
return field_education;
}
public void setField_education(Field_education field_education) {
this.field_education = field_education;
}
public Field_user_experience getField_user_experience() {
return field_user_experience;
}
public void setField_user_experience(Field_user_experience field_user_experience) {
this.field_user_experience = field_user_experience;
}
public Field_projects getField_projects() {
return field_projects;
}
public void setField_projects(Field_projects field_projects) {
this.field_projects = field_projects;
}
public Field_merits_awards getField_merits_awards() {
return field_merits_awards;
}
public void setField_merits_awards(Field_merits_awards field_merits_awards) {
this.field_merits_awards = field_merits_awards;
}
public Field_publications getField_publications() {
return field_publications;
}
public void setField_publications(Field_publications field_publications) {
this.field_publications = field_publications;
}
public Field_volunteering getField_volunteering() {
return field_volunteering;
}
public void setField_volunteering(Field_volunteering field_volunteering) {
this.field_volunteering = field_volunteering;
}
public Field_personal_information getField_personal_information() {
return field_personal_information;
}
public void setField_personal_information(Field_personal_information field_personal_information) {
this.field_personal_information = field_personal_information;
}
public Field_additional_skills getField_additional_skills() {
return field_additional_skills;
}
public void setField_additional_skills(Field_additional_skills field_additional_skills) {
this.field_additional_skills = field_additional_skills;
}
public List<Object> getField_company_description() {
return field_company_description;
}
public void setField_company_description(List<Object> field_company_description) {
this.field_company_description = field_company_description;
}
public Field_i_am_a getField_i_am_a() {
return field_i_am_a;
}
public void setField_i_am_a(Field_i_am_a field_i_am_a) {
this.field_i_am_a = field_i_am_a;
}
public List<Object> getField_groups_logo() {
return field_groups_logo;
}
public void setField_groups_logo(List<Object> field_groups_logo) {
this.field_groups_logo = field_groups_logo;
}
public Field_user_avatar getField_user_avatar() {
return field_user_avatar;
}
public void setField_user_avatar(Field_user_avatar field_user_avatar) {
this.field_user_avatar = field_user_avatar;
}
public Metatags getMetatags() {
return metatags;
}
public void setMetatags(Metatags metatags) {
this.metatags = metatags;
}
public Rdf_mapping getRdf_mapping() {
return rdf_mapping;
}
public void setRdf_mapping(Rdf_mapping rdf_mapping) {
this.rdf_mapping = rdf_mapping;
}
public Comment_notify_settings getComment_notify_settings() {
return comment_notify_settings;
}
public void setComment_notify_settings(Comment_notify_settings comment_notify_settings) {
this.comment_notify_settings = comment_notify_settings;
}
public String getRealname() {
return realname;
}
public void setRealname(String realname) {
this.realname = realname;
}
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
用户节点类即给予以下错误:预期BEGIN_OBJECT 但BEGIN_ARRAY第1分1114列路径$ .og_user_node
我的API调用:
public void getProfile(){
Log.v("checkResponseProfile","check please");
OkHttpClient httpClient = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@Override
public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException {
Request original = chain.request();
// Request customization: add request headers
Request.Builder requestBuilder = original.newBuilder() .addHeader("Accept-Language","application/json")
.addHeader("content-type", "application/x-www-form-urlencoded").addHeader("API_KEY", "a5XSE8XCdsY6hAoCNojYBQ")
.addHeader("X-CSRF-Token", Constants.token)
;
Request request = requestBuilder.build();
return chain.proceed(request);
}
}).build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.API_BASE_URL)
.client(httpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiInterface restAPI = retrofit.create(ApiInterface.class);
Call<Profile> callProfile = restAPI.getProfile(1015);
callProfile.enqueue(new Callback<Profile>() {
@Override
public void onResponse(Call<Profile> call, Response<Profile> response) {
Log.v("checkResponseProfile",response.body().toString()+"code"+response.code());
}
@Override
public void onFailure(Call<Profile> call, Throwable t) {
Log.v("checkResponseProfile","check here");
t.printStackTrace();
}
});
}
MY接口端点方法: @GET( “{UID}”) 呼叫getProfile(@Path( “UID”)INT UID);
这是因为在服务DOC 用户提到的检索目的我的API结构: - 用户通过ID休息网址检索: - /API/V1 /人/ {UID}方法:GET头:接受语言: 应用/ JSON API_KEY:a5XSE8XCdsY6hAoCNojYBQ内容类型: 应用程序/ x-WWW窗体-urlencoded X-CSRF令牌:
答
更改所有通话,回调和响应
Call<Profile>
到
Call<List<Profile>>
和
Callback<Profile>
到
Callback<List<Profile>>
和
Response<Flowers>
到
Response<List<Flowers>>
答
您的api调用返回一个JSON数组,但您的翻新方法修饰需要一个简单对象,这意味着您试图将JSON数组解析为json对象。
你可以通过两种方式解决这个问题。
- 如果你有权力在API,使其返回一个JSON对象,而不是一个JSON数组
- 更妙的是,改变你的装饰方法返回一个列表,并在回调中刚刚恢复的第一个项目。 见下文
Call<List<Profile>> callProfile = restAPI.getProfile(1015);
callProfile.enqueue(new Callback<List<Profile>>() {
@Override
public void onResponse(Call<List<Profile>> call, Response<List<Profile>> response) {
//TODO use first entry of response
Log.v("checkResponseProfile",response.body().toString()+"code"+response.code());
}
@Override
public void onFailure(Call<List<Profile>> call, Throwable t) {
Log.v("checkResponseProfile","check here");
t.printStackTrace();
}
});
希望帮助
答
我已经解决了这个问题,最后,问题是,我已经产生里面我是用我的POJO类解析时,我将og_user_node作为单个对象,但它是类型为Og_user_node的对象的列表类型将Og_user_node的类型从Og_user_node更改为List,然后类似地将整个pojo更正为pe回应。 起初我使用的工具来生成我的POJO类,但相信我这个工具是不是在好的情况下的反应是很大,,它没有给出正确的类
反正你的回应感谢球员,并帮助
我尝试以下 – Naman
我试过你的建议改变返回类型ftom单个对象到对象列表,但得到以下错误:预期的BEGIN_OBJECT,但BEGIN_ARRAY在第1行1114路径$ .og_user_node – Naman
sry的错误是...预期的BEGIN_ARRAY,但是BEGIN_OBJECT在第1行第2行路径$ chnaging声明后调用并调用列表类型 – Naman