Converting a Javascript array to a Java array

Anderson Green picture Anderson Green · Jan 13, 2012 · Viewed 22.1k times · Source

I'm trying to convert a Javascript array in Java to a Java array. I'm using the javax.script package. I tested this example here, but the type "NativeArray" was not recognized: https://stackoverflow.com/a/1433489/975097

How can I get the NativeArray type to be recognized?

Answer

chubbsondubs picture chubbsondubs · Jan 13, 2012

Rhino offers this:

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

Also Scriptable interface offers get() and set() so you can easily enumerate the properties of an object and add it to an array:

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);
}

Same thing but not using NativeArray since that appears to be a Rhino specific thing. You could easily drop a breakpoint and see what type of object you were given then downcast to that. It's some sort of JS Array implementation that's pretty close to NativeArray.