Comment convertir Rhino-les tableaux JavaScript Java-Tableaux
J'ai le texte suivant:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine jsEngine = mgr.getEngineByName("JavaScript");
jsEngine.eval("function getArray() {return [1,2,3,4,5];};");
Object result = jsEngine.eval("getArray();");
Comment puis-je convertir l'objet de résultat, qui est de type soleil.org.mozilla.le javascript.interne.NativeArray à un correspondant java tableau? Peut somone me montrer un de travail exemple de code où c'est possible? Il devrait travailler pour la Chaîne Entier et les tableaux. De Plus, il serait bon de savoir où chercher pour les autres conversions de types de données entre le rhino moteur et java.
Btw, je sais que cette page mais je suis vraiment à la recherche d'un exemple de code opérationnel.
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr si c'était le cas lorsque cette question a été posée la première fois, mais
NativeArray
met en œuvre lajava.util.List
interface. Un moyen simple de convertir un réel Java tableau est donc:Si le Javascript est sous votre contrôle, vous pouvez faire la transformation, comme par ce document. Afin de s'adapter à votre exemple, quelque chose comme:
Bien que, si vous ne pouvez pas modifier le Javascript cette approche ne fonctionne pas, et vous [je]vais[/i] avez une instance de soleil.org.mozilla.le javascript.interne.NativeArray que votre
result
variable. À quel point, je pense que vous avez juste besoin de cast et de traiter directement avec lui, en utilisant toutes les méthodes publiques, il expose; il n'est sans doute pas assez, mais je ne vois pas d'autres options. En particulier, je pense que la seule chose que vous pouvez garantir à la belle Rhino niveau, c'est qu'il sera une instance deScriptable
(et probablementScriptableObject
), ce qui ne veut pas vous aider à l'utiliser comme un Tableau.Kevin répondre ressemble à un bon chemin à faire ici (et qui est semblable à ce que j'étais sur le point de modifier dans! :-))
Solution générale à l'aide de JASON que les données intermédiaires: