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