2016-01-13 38 views
-1

我在我的JSONObject \如下图所示:添加在JSONObject的字符串

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

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

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

在试图摆脱我添加了.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

也许你需要使用JSONTokener http://developer.android.com/reference/org /json/JSONTokener.html - 根据文档“将JSON(RFC 4627)编码的字符串解析为相应的对象。”它使用的例子显示了类似的\ backslashes给你。让我知道这个是否奏效。 – njachowski

+1

这里真正的问题是“\\”是如何进入的。这是应该修复的地方,而不是错误发生后的解决方法。 – Henry

+0

你不能简单地替换它们......'“[\”0 \“”,“lng”:“\”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}]} 
+0

json is {“coord”:[{“lng”:0,“lat”:0}]},但是在http后添加值对后的回应是:{“coord”:[{“lat”: “{\”coord \“:[{\”lng \“:0”,“lng”:“\”lat \“:0}]}”}],... – JohnWilliams

+0

您的问题没有提及HTTP POST ,所以我无法帮助你。欢迎您提出一个新的问题,但由于我似乎已经解决了这个问题,欢迎您接受我的回答。 –

-1

应该工作:

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

和单取代,这将做到:

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