【问题标题】:Passing JSON array from javascript variable to java in android将JSON数组从javascript变量传递到android中的java
【发布时间】:2016-11-07 17:00:14
【问题描述】:

我有一个 JSON 数据数组已经存储在一个 javascript 变量中,如下所示:

var data = [{"a":153.15,"b":26.15,"c":item1},{"a":148.63,"b":23.45,"c":item2}];
function alertJson(data) {
    Android.alertJson(data);
}

然后,我想在java中做这样的事情:

@JavascriptInterface
public void alertJson(Array jsonStr) {
    JSONArray jsonarray = new JSONArray(jsonStr);
    for (int i = 0; i < jsonarray.length(); i++) {
        JSONObject jsonobject = jsonarray.getJSONObject(i);
        String a = jsonobject.getString("a");
        String b = jsonobject.getString("b");
        String c = jsonobject.getString("c");
    }
}

现在我收到一条错误消息,提示无法将 Array 解析为 Array jsonStr 中的类型。

但问题是 jsonStr 未定义或未初始化。我想在 jsonStr 中获取 javascript 变量的值(数组),以便可以在 java 中使用它。我怎样才能做到这一点?

顺便说一句,我知道如何将 javascript 绑定到 android。我想我只需要一种方法以某种方式将数组存储在 jsonStr 中,就像使用函数一样。请帮帮我。

【问题讨论】:

  • 将json数组转成字符串后发送。
  • 你能展示一下你是如何得到 jsonStr 的吗?
  • @TomerShemesh 我刚刚编辑了我的问题以添加信息。我想做的是在 webview 中发生 onclick 时使用 java 代码。你能帮我进一步吗?谢谢!
  • @Azim 你能详细解释一下吗?你的意思是我应该把 JSONArray 改成别的吗?

标签: javascript java android arrays json


【解决方案1】:

试试这个

 var data = JSON.parse('[{"a":153.15,"b":26.15,"c":item1},{"a":148.63,"b":23.45,"c":item2}]');

and

Android.alertJson(data.stringify());

public void alertJson(Array jsonStr) { // Change Array to String

【讨论】:

  • 我在“public void alertJson(Array jsonStr) {”行收到“数组无法解析为类型”错误。在尝试您建议的方式之前,我是否应该将这一行的 Array 更改为其他内容?谢谢。
  • 应该可以工作.. 把 toast 消息.. 在你的并尝试做 toast
  • 感谢您的帮助。但我的问题似乎不在于解析 javascript 中的数据,而在于我的 java 代码。你能看看我的java代码吗?
  • 就像你说的,吐司很好用。我还需要一种访问 java 中数据项的方法 :)
【解决方案2】:

也有这个问题。解决方案:

var data = [{"a":153.15,"b":26.15,"c":item1},{"a":148.63,"b":23.45,"c":item2}];
var myJSON = JSON.stringify(data );
Android.alertJson(myJSON);

在 Android (Kotlin) 上:

@JavascriptInterface
    fun alertJson(myJSON: String) {
       var jsonarray = JSONArray(myJSON)
       // iterate through jsonarray 
}

Java(未测试,但可能有效)

@JavascriptInterface
public void alertJson(String myJSON) {
    JSONArray jsonarray = new JSONArray(myJSON);
    // iterate through jsonarray 

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2018-02-27
    • 2014-03-28
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多