Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android gson中的java.lang.StackOverflower错误_Android_Stack Overflow_Retrofit2_Android Mvp_Gson - Fatal编程技术网

Android gson中的java.lang.StackOverflower错误

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.

在以MVP结构构建我的应用程序的过程中,我遇到了一个问题,那就是当我调用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();
            }
        });
}
这是我的两个模型课:(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
}