在cordova中, 你可能需要将一些数据返回到视图(不仅是简单的字符串)。可以使用JSON将这些数据有效地发送到视图, 但是我们不会手动从数组创建JSON字符串, 因为这不是一个好习惯。
使用Java android将信息从Java发送到Cordova中的javascript:
我们需要在类中包括以下组件, 然后我们才能创建json数组和对象(如果使用try and catch block, 则需要包括JSONException)。
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
在javascript中, 创建对象确实非常容易, 你只需要为对象分配属性名称即可, 仅此而已(使用点或括号表示法)。 Java也很简单, 但是有所不同, 我们将创建一个JSONObject类型的变量, 并使用PUT函数添加一个键。
JSONObject item = new JSONObject();
item.put("name", "filename.java");
item.put("filepath", "aimaginarypath");
// in javascript this is something like
// {filepath:"aimaginarypath", name:"filename.java"}
可变项包含名称和文件路径键, 作为普通的javascript对象。
在javascript中, 我们需要调用push函数将项目添加到现有数组中。与java相同, 只是带有其他名称(添加)。
JSONArray jsonArray = new JSONArray();
jsonArray.put("item number 1");
jsonArray.put("item number 2");
// in javascript this is something like :
// ["item number 1", "item number 2"]
要发送数组或对象, 我们将在变量上调用toString方法。这是在Cordova中发送结果的两种方法(请记住, callbacks =类的callbackContext变量):
异步(使用threadPool)
JSONArray jsonArray = new JSONArray();
jsonArray.put("item number 1");
// send the JSONArray using jsonArray.toString();
PluginResult result = new PluginResult(PluginResult.Status.OK, jsonArray.toString());
result.setKeepCallback(true);
callbacks.sendPluginResult(result);
“同步”
JSONObject item = new JSONObject();
item.put("name", "filename.java");
callbacks.success(item.toString());
然后, 你只需要使用Javascript(JSON.parse(jsonstring))进行解析, 就可以玩得开心!