在JSONObject字符串中添加\

时间:2016-01-13 17:59:39

标签: android json jsonobject

我在我的JSONObject中有\,如下所示:

{"coord":[{"lat":"[\"0\"","lng":"\"0\""}],...

我正试图摆脱\ s,如下所示:

{"coord":[{"lat":"0","lng":"0"}],...

为了摆脱\ s,我添加了.replaceAll(“\\\\”,“”),我在其他SO问题上看到了这个问题的答案,但是.replaceAll(“\\\\ “,”“);不管用。有什么建议吗?

GPS gps = new GPS(getApplicationContext());
               double latitude = gps.getLatitude();
               double longitude = gps.getLongitude();
JSONArray coord = new JSONArray();

               String lattostring = String.valueOf(latitude);

               Log.v("lattostring", lattostring);

               String lontostring = String.valueOf(longitude);
               Log.v("lontostring", lontostring);
               JSONObject latObject = new JSONObject();

               String jsonFormattedlat = lattostring.replaceAll("\\\\", "");
               String jsonFormattedlon = lontostring.replaceAll("\\\\", "");


               Log.v("jsonFormattedlat", jsonFormattedlat);
               Log.v("jsonFormattedlom", jsonFormattedlon);

               coord.put(jsonFormattedlat);
               Log.v("coord1", String.valueOf(coord.put(jsonFormattedlat)));
               coord.put(jsonFormattedlon);
              coord.put(lontostring);
               Log.v("coord2", String.valueOf(coord.put(jsonFormattedlon)));


               coord.toString().replace( "\\\"", "");
               conn.addValuePair("coord", coord.toString().replace( "\\\"", ""));
               Log.v("coord", coord.toString().replace( "\\\"", ""));

2 个答案:

答案 0 :(得分:1)

正如我在评论中所述,"[\"0\"","lng":"\"0\""是密钥"lat"的单个值,因此问题不在于引号被转义,而是您似乎将“放入”值JSON不正确。

此代码获取您希望的格式。

// make containing object
JSONObject json = new JSONObject();

// get your values
double latitude = 0;
double longitude = 0;
// make array
JSONArray coord = new JSONArray();

// object to put in array
JSONObject coord1 = new JSONObject();
coord1.put("lat", latitude);
coord1.put("lng", longitude);
// put object in array
coord.put(coord1);

// put array in containing object
json.put("coord", coord);

System.out.println(json.toString());
// {"coord":[{"lng":0,"lat":0}]}

答案 1 :(得分:-1)

应该有效:

 str = str.replaceAll("\\\\", "");

并且对于单次替换,这将执行:

str = str.replace("\\", "");