2017-02-12 75 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 + "\")");