发送嵌套的JSON对象而不使用转义字符

时间:2017-02-19 02:25:07

标签: java android json android-volley

我尝试使用JSONObjectRequest将嵌套的JSONObject发送到服务器。服务器期望以下形式的JSONObject:

{  
   "commit":"Sign In",
   "user":{  
      "login":"my username",
      "password":"mypassword"
   }
}

但目前我的程序正在发送以下内容(jsonObject.tostring()

{  
   "commit":"Sign In",
   "user":"   {  
      \"login\”:\”myusername\”,
      \”password\”:\”mypassword\”
   }   ”
}

JSONObjects由:

制作
final JSONObject loginRequestJSONObject = new JSONObject();
final JSONObject userJSONObject = new JSONObject();
userJSONObject.put("login", "myuser");
userJSONObject.put("password", "mypass");

loginRequestJSONObject.put("user", userJSONObject);
loginRequestJSONObject.put("commit", "Sign In");
Map<String, String> paramsForJSON = new HashMap<String, String>();
paramsForJSON.put("user", userJSONObject.toString().replaceAll("\\\\", "");
paramsForJSON.put("commit", "Sign In");
JSONObject objectToSend =  new JSONObject(paramsForJSON);

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, objectToSend,...)

如何在上面的表单中发送JSONObject?

1 个答案:

答案 0 :(得分:1)

这是你的错误:

paramsForJSON.put("user", userJSONObject.toString().replaceAll("\\\\", ""));

您已将用户转变为您不需要的String,只需执行此操作:

loginRequestJSONObject.put("user", userJSONObject);

虽然你已经完成了这项工作,但实际上你已经拥有了正确的线路,这就是你所需要的:

final JSONObject loginRequestJSONObject = new JSONObject();
final JSONObject userJSONObject = new JSONObject();
userJSONObject.put("login", "myuser");
userJSONObject.put("password", "mypass");

loginRequestJSONObject.put("user", userJSONObject);
loginRequestJSONObject.put("commit", "Sign In");

JSONObject objectToSend = loginRequestJSONObject;