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

本文概述

  • 包括必需的组件
  • 用Java创建JSON对象
  • 用Java创建JSON数组
  • 使用Cordova将JSON数组和JSON对象发送到javascript
在cordova中, 你可能需要从Java返回一些数据到Javascript视图(不仅是简单的字符串)。可以使用JSON将这些数据高效且轻松地发送到视图, 但是我们不会手动从数组创建JSON字符串, 因为这不是一个好习惯, 你可以使用Cordova已提供的org.json库。
包括必需的组件我们需要在类中包括以下组件, 然后我们才能创建json数组和对象(如果使用try and catch block, 则需要包括JSONException)。
import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;

用Java创建JSON对象在javascript中, 创建对象确实非常容易, 你只需要为对象分配属性名称即可, 仅此而已(使用点或括号表示法)。使用Java也很简单, 但是有所不同。
JSONObject构造函数可用于将外部表单JSON文本转换为内部表单, 可使用get和opt方法检索其值, 或使用put和toString方法将值转换为JSON文本。如果可以找到一个get方法, 则返回一个值;如果找不到一个方法, 则抛出异常。 opt方法返回默认值而不是引发异常, 因此对于获取可选值很有用。
在这种情况下, 我们只想将数据从Java发送到Javascript, 我们将创建一个类型为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对象。
用Java创建JSON数组在javascript中, 我们需要调用push函数将项目添加到现有数组中。与java相同, 只是你需要使用JSONArray类声明一个新数组, 并使用add添加各项。
【如何将JSON对象从Java返回到javascript(cordova)(2)】JSONArray可以将JSON文本转换为Java对象。 toString方法转换为JSON文本, 这就是我们要发送到Javascript的内容。
JSONArray jsonArray = new JSONArray(); jsonArray.add("item number 1"); jsonArray.add("item number 2"); // in javascript this is something like :// ["item number 1", "item number 2"]

使用Cordova将JSON数组和JSON对象发送到javascript通常, 我们会使用以下一些选项将响应从Java返回到javascript:
String response = "myinformation"; PluginResult result = new PluginResult(PluginResult.Status.OK, response); result.setKeepCallback(true); callbackContext.sendPluginResult(result); // orcallbackContext.success(response);

在这种情况下, 如果尝试将响应替换为以前创建的变量之一(item或jsonArray), 则显然会出现错误。为什么呢?因为你要发送的不是字符串变量, 所以请记住JSON是字符串, 我们将仅使用变量的toString方法将其转换为JSON String表示法:
JSONArray jsonArray = new JSONArray(); JSONObject item = new JSONObject(); // Send an object callbackContext.success(item.toString()); //or Send an arraycallbackContext.success(jsonArray.toString());

玩得开心 !

    推荐阅读