gpt4 book ai didi

android - gson 中的 java.lang.StackOverflowError

转载 作者:行者123 更新时间:2023-12-03 19:37:56 26 4
gpt4 key购买 nike

在 MVP Structure 中构建我的应用程序时,我遇到了一个问题,当我使用 Retrofit 调用 Web 服务以响应成功时
我将整个数据传递到 json 字符串中,所以它会促使我这样做。

我的原木猫:

 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();
}
});
}

这是我收到响应的主要 Activity :
//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);

}
}
});
}
}

从 Setdefaultvalue() 我正在检查我对 Activity 的响应:
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");
}
}

这是我的两个模型类:(PitchList_Res)
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;
}
}

PitchList_Data.java
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;
}
}

最佳答案

I was getting the same problem & found that error is due to the variables in the class of type Object.



我正在解析一个包含内部对象的 java 类对象,其中一些包含 Object 类型的变量。由于 Gson 库无法解析该数据。

我已经删除了变量的对象类型声明,问题得到了解决。

I think Gson library is unable to parse the java object to json if java object contains some variable that is of generic type(like Object Type in my case).


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
}

关于android - gson 中的 java.lang.StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45518854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com