2017-02-12 58 views
-1

在Java傳遞一個JSONObject到javascript功能發送的java的JSONObject到javascript函數

  final JSONObject json = new JSONObject(); 
      try { 
       json.put("Colour", spinnerText1); 
       json.put("Gender", spinnerText2); 
      } catch (JSONException e) { 

webview.loadUrl("javascript:updateJSON('User36'" + ",'" + 
incident + "'," + 
latitude + "," + 
longitude + ",\"" + 
"asdf" + "\")"); 

上述文件發送給JavaScript文件正確。我想用名爲json = {「Color」:「White」,「Gender」:「Male」的JSON對象替換「asdf」}

使用json.toString()不起作用(可能由於撇號) 。我不能讓\」來工作的。什麼是正確的語法?

回答

1

你做的是發送一個字符串。有一兩件事你可以做的就是將JSON轉換爲字符串

final JSONObject json = new JSONObject(); 
try { 
    json.put("Colour", spinnerText1); 
    json.put("Gender", spinnerText2); 
} catch (JSONException e) {...} 

也許你看看在Java類文件(的toString可太) http://www.gwtproject.org/javadoc/latest/com/google/gwt/json/client/JSONObject.html

webview.loadUrl(
    "javascript:updateJSON(
    'User36'" + ",'" + 
    incident + "'," + 
    latitude + "," + 
    longitude + ",\"" + 
    json.toString() + "\" 
)" 
); 

也許它更好了,建立與用戶名和其他屬性一個完整的對象,並直接發送這功能。

+0

你混淆了Java和JS我想。上面的問題在Java中。 var和JSON.parse()不是Java – Iorek

+0

是的第一我沒有看到它的Java;)我編輯它。 toString函數是你需要的 – mtizziani

+0

我試過這個,它不會工作。 json {「Color」:「White」,「Gender」:「Male」}包含撇號和逗號,它們阻止它以一個字符串發送。甚至「{\」顏色\「:」白色\「,\」性別\「:\」男性\「}」不起作用 – Iorek

0

需要更換逗號JSON如下

 final String json1 = json.toString(); 
     final String json2 = json1.replace("\"","\\"); 
     Log.e("JSON data",json2); 

然後

    webview.loadUrl("javascript:updateJSON('User36'" + ",'" + 
          incident + "'," + 
          latitude + "," + 
          longitude + ",\"" + 
          json2 + "\")"); 
相關問題