Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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
Java JsonObject生成堆栈溢出错误_Java_Android_Json_Android Volley - Fatal编程技术网

Java JsonObject生成堆栈溢出错误

Java JsonObject生成堆栈溢出错误,java,android,json,android-volley,Java,Android,Json,Android Volley,我正在尝试构建一个jsonobject,以便通过post请求发送。但我得到的错误如下所示: 03-02 13:54:50.340: E/AndroidRuntime(2862): FATAL EXCEPTION: main 03-02 13:54:50.340: E/AndroidRuntime(2862): Process: in.mally.mallys, PID: 2862 03-02 13:54:50.340: E/AndroidRuntime(2862): java.lang.Stac

我正在尝试构建一个jsonobject,以便通过post请求发送。但我得到的错误如下所示:

03-02 13:54:50.340: E/AndroidRuntime(2862): FATAL EXCEPTION: main
03-02 13:54:50.340: E/AndroidRuntime(2862): Process: in.mally.mallys, PID: 2862
03-02 13:54:50.340: E/AndroidRuntime(2862): java.lang.StackOverflowError
03-02 13:54:50.340: E/AndroidRuntime(2862):     at java.lang.String._getChars(String.java:908)
03-02 13:54:50.340: E/AndroidRuntime(2862):     at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:147)
03-02 13:54:50.340: E/AndroidRuntime(2862):     at java.lang.StringBuilder.append(StringBuilder.java:216)
03-02 13:54:50.340: E/AndroidRuntime(2862):     at org.json.JSONStringer.beforeValue(JSONStringer.java:412)
03-02 13:54:50.340: E/AndroidRuntime(2862):     at org.json.JSONStringer.open(JSONStringer.java:178)
03-02 13:54:50.340: E/AndroidRuntime(2862):     at org.json.JSONStringer.object(JSONStringer.java:158)
03-02 13:54:50.340: E/AndroidRuntime(2862):     at org.json.JSONObject.writeTo(JSONObject.java:670)
该错误似乎是堆栈溢出错误。我不太明白这是怎么回事。下面的代码试图构建一个jsonObject,并将该对象作为值放入另一个jsonObject中。 我试图创建的JsonObject的格式是

{ "email" : "a@b.com",
  "user_record" : first_jsonObject
}
第一个JsonObject只是一个简单的字符串键值对。下面是我用来实现它的代码

JSONObject j = new JSONObject();
    try {
        j.put("offer_id", "531328f8616c69133a350000");
        j.put("views", "1");
        j.put("call_count", "0");
        j.put("rating", "3");
    } catch (JSONException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    JSONObject json = new JSONObject();
    try {
        json.put("email", "a@b.com");
        json.put("user_post_records", json);

    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    JsonObjectRequest r = new JsonObjectRequest(Method.POST,POST_URL, json, 
            new Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    // TODO Auto-generated method stub

                }
            }, 
            new ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO Auto-generated method stub

                }
            });
    VolleyRequest.getInstance(getActivity().getBaseContext()).getRequestQueue().add(r);
JSONObject j=新的JSONObject();
试一试{
j、 卖出(“要约id”,“531328f8616c69133a350000”);
j、 付诸表决(“意见”、“1”);
j、 看跌期权(“看涨期权计数”、“0”);
j、 卖出(“评级”,“3”);
}捕获(JSONException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
JSONObject json=新的JSONObject();
试一试{
json.put(“电子邮件”a@b.com");
put(“用户日志记录”,json);
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
JsonObjectRequest r=新的JsonObjectRequest(Method.POST、POST_URL、json、,
新侦听器(){
@凌驾
公共void onResponse(JSONObject响应){
//TODO自动生成的方法存根
}
}, 
新的ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//TODO自动生成的方法存根
}
});
getInstance(getActivity().getBaseContext()).getRequestQueue().add(r);

您试图将
json
对象设置为自身的值。因此,它调用自身,这将成为一个无效的递归调用,从而产生
stackoverflowerrror

这大概是你的错别字,因此:

更改:

json.put("user_post_records", json);
致:

json.put("user_post_records", j);