[android]将嵌套的 JSON 对象没有转义字符发送

发布时间: 2017/3/4 5:06:24
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想使用 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:

这是你的错误︰

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;
赞助商