2016-01-13 40 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("\\", "");