将Javascript数组转换为Java数组



我正在尝试将Java中的Javascript数组转换为Java数组。我使用的是javax.script包。我在这里测试了这个例子,但没有识别出类型"NativeArray":https://stackoverflow.com/a/1433489/975097

如何识别NativeArray类型?

Rhino提供以下功能:

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Embedding_tutorial#usingJSObjs

另外,Scriptable接口提供了get()和set(),因此您可以轻松地枚举对象的属性并将其添加到数组中:

Scriptable arr = (Scriptable) result;
Object [] array = new Object[arr.getIds().length];
for (Object o : arr.getIds()) {
   int index = (Integer) o;
   array[index] = arr.get(index, null);
}

同样的事情,但没有使用NativeArray,因为这似乎是Rhino特有的事情。您可以很容易地删除一个断点,看看您得到了什么类型的对象,然后向下转换到那个类型。这是一种非常接近NativeArray的JS数组实现。

根据这个答案,您最好编写一个JavaScript转换器函数,使用Rhino的Java绑定功能将本地JavaScript数组转换为Java数组。请注意,在转换各个元素时,必须小心使用正确的类型。

[Edit]下面是一个使用字符串数组的工作示例:

ScriptEngine js = new ScriptEngineManager().getEngineByName("JavaScript");
String ss[] = (String[]) js.eval(
    "(function() {" +
    "  var a = java.lang.reflect.Array.newInstance(java.lang.String, 3);" +
    "  a[0] = 'foo';" +
    "  a[1] = 'bar';" +
    "  a[2] = 'gah';" +
    "  return a;" +
    "})()");
System.out.println(Arrays.toString(ss)); // => [foo, bar, gah]

我推荐Doug Crockfords的JSON java库。这允许您将json转换为本地JAVA对象。

我只需使用json-lib并以这种方式解析数组。例如,请参阅如何解析JSON并将其值转换为数组?

相关内容

  • 没有找到相关文章

最新更新