在 JSONObject 字符串中添加了 \

Added \ in JSONObject Strings

我的 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( "\\"", ""));

正如我在评论中所说,"[\"0\"","lng":"\"0\"" 是键 "lat" 的单个值,所以问题不在于引号被转义,而是你似乎是 "putting" 值错误地转换为 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}]}

应该有效:

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

对于单个替换,这样做:

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