如何将JSON对象从Java返回到javascript(cordova)

在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))进行解析, 就可以玩得开心!

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?