我正在尝试使用post请求构建一个jsonobject。但我得到的错误如下所示:
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)
错误似乎是stackoverflow错误。我无法弄清楚它是如何工作的。下面的代码尝试构建一个jsonObject,并将该Object作为值放入另一个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);
答案 0 :(得分:10)
您正在尝试将json
对象设置为自身值。因此,它调用自身成为无效的递归调用,因此StackOverflowError
。
这可能是你最后的错字,因此:
变化:
json.put("user_post_records", json);
要:
json.put("user_post_records", j);