Android gson中的java.lang.StackOverflower错误
在以MVP结构构建我的应用程序的过程中,我遇到了一个问题,那就是当我调用web服务以响应成功后的改进 我将整个数据传递到json字符串中,因此它会促使我这样做 我的原木猫:Android gson中的java.lang.StackOverflower错误,android,stack-overflow,retrofit2,android-mvp,gson,Android,Stack Overflow,Retrofit2,Android Mvp,Gson,在以MVP结构构建我的应用程序的过程中,我遇到了一个问题,那就是当我调用web服务以响应成功后的改进 我将整个数据传递到json字符串中,因此它会促使我这样做 我的原木猫: FATAL EXCEPTION: main java.lang.StackOverflowError at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:147) at java.lang.StringBuffer.
FATAL EXCEPTION: main java.lang.StackOverflowError
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:147)
at java.lang.StringBuffer.append(StringBuffer.java:219)
at java.io.StringWriter.write(StringWriter.java:147)
at java.io.StringWriter.append(StringWriter.java:199)
at java.io.StringWriter.append(StringWriter.java:30)
at com.google.gson.stream.JsonWriter.beforeValue(JsonWriter.java:651)
at com.google.gson.stream.JsonWriter.open(JsonWriter.java:325)
at com.google.gson.stream.JsonWriter.beginObject(JsonWriter.java:308)
at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.write(MapTypeAdapterFactory.java:205)
at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.write(MapTypeAdapterFactory.java:145)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:125)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:243)
at com.google.gson.internal.bind.ObjectTypeAdapter.write(ObjectTypeAdapter.java:107)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69)
at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.write(MapTypeAdapterFactory.java:208)
at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.write(MapTypeAdapterFactory.java:145)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:125)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:243)
at com.google.gson.internal.bind.ObjectTypeAdapter.write(ObjectTypeAdapter.java:107)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69)
以下是我的改装API调用:
//API Call for Pitch
public void pitch() {
services
.getAPI()
.pitchList()
.enqueue(new Callback<PitchList_Res>() {
@Override
public void onResponse(Call<PitchList_Res> call, Response<PitchList_Res> response) {
if (!response.body().getdATA().isEmpty()) {
Gson gson1=new Gson();
String json = gson1.toJson(response);
mListener.pitch(json);
}
}
@Override
public void onFailure(Call<PitchList_Res> call, Throwable t) {
call.cancel();
Toast.makeText(context, R.string.error, Toast.LENGTH_SHORT).show();
}
});
}
这是我的两个模型课:(PitchList\u Res)
我也遇到了同样的问题&发现错误是由于
对象类型的类中的变量
我正在解析一个java类对象,该对象包含内部对象,其中一些包含object类型的变量。因此,Gson库无法解析该数据
我已经删除了变量的对象类型声明,问题得到了解决
我认为Gson库无法将java对象解析为json,如果
java对象包含一些泛型类型的变量(如对象
在我的案例中输入)
哪一行出现崩溃或异常,比如给我一段代码进行分析。当我调试我的应用程序时,我在改装呼叫中遇到崩溃。Gson gson1=新的Gson();字符串json=gson1.toJson(响应);
//Response of Pitch
@Override
public void pitch(String response_pitch) {
editor.putString(Preference_Data.PITCH_RESPONSE, response_pitch);
editor.commit();
PitchList_Res pitchList_res = gson.fromJson(response_pitch, PitchList_Res.class);
pitchlist.addAll(pitchList_res.getdATA());
for (int i = 0; i < pitchlist.size(); i++) {
View pitchview = getLayoutInflater().inflate(
R.layout.textviewlayout, null);
final TextView tvtitle = (TextView) pitchview
.findViewById(R.id.tv_title);
String id = pitchlist.get(i).getpITCHTYPEID().toString();
tvtitle.setId(Integer.valueOf(id));
tvtitle.setText(pitchlist.get(0).getpITCHSHORT().toString());
tvtitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (stPitchSelectionID != -1) {
findViewById(stPitchSelectionID)
.setBackgroundResource(
R.drawable.btn_bg);
}
if (stPitchSelectionID == v.getId()) {
stPitchSelectionID = -1;
tvtitle.setBackgroundResource(R.drawable.btn_bg);
pitchid = "0";
} else {
stPitchSelectionID = v.getId();
tvtitle.setBackgroundResource(R.drawable.btn_bg_select);
pitchid = String.valueOf(stPitchSelectionID)
.substring(1);
}
}
});
}
}
public void Setdefaultvalue() {
llpitchcontainer.removeAllViews();
llbatresultcontainer.removeAllViews();
llpitchresultcontainer.removeAllViews();
llscoringcontainer.removeAllViews();
etspeed.setText(65 + "");
tvhh.setBackgroundResource(R.drawable.no_toggle);
String response_pitch=pref.getString(Preference_Data.PITCH_RESPONSE,"");
if (response_pitch.equalsIgnoreCase("")) {
mainScoutPresenter.pitch();
Log.e("Pitch_if","Pitch_if");
} else {
pitch(response_pitch);
Log.e("Pitch_else", "Pitch_else");
}
}
public class PitchList_Res implements Serializable {
@SerializedName("DATA")
@Expose
private List<PitchList_Data> dATA = null;
public List<PitchList_Data> getdATA() {
return dATA;
}
public void setdATA(List<PitchList_Data> dATA) {
this.dATA = dATA;
}
}
public class PitchList_Data implements Serializable {
@SerializedName("PITCHTYPEID")
@Expose
private Integer pITCHTYPEID;
@SerializedName("PITCHFULL")
@Expose
private String pITCHFULL;
@SerializedName("PITCHSHORT")
@Expose
private String pITCHSHORT;
public Integer getpITCHTYPEID() {
return pITCHTYPEID;
}
public void setpITCHTYPEID(Integer pITCHTYPEID) {
this.pITCHTYPEID = pITCHTYPEID;
}
public String getpITCHFULL() {
return pITCHFULL;
}
public void setpITCHFULL(String pITCHFULL) {
this.pITCHFULL = pITCHFULL;
}
public String getpITCHSHORT() {
return pITCHSHORT;
}
public void setpITCHSHORT(String pITCHSHORT) {
this.pITCHSHORT = pITCHSHORT;
}
}
public class HatchRetailer {
private int id;
private String name;
private String purchaseLink;
private String purchaseLinkDirect;
private String logo;
private String currency;
private double price;
private String stockInfo;
private int stockCount;
private String sourceDate;
private String businessId;
// As per my understanding Gson library is not able to parse variable of type Object
// private Object marketFocus;
// private Object group;
// Setters & Getters
}