8
votes

Accès aux cartes Java et aux listes d'objets JavaScript dans Rhino

Y a-t-il un moyen d'accéder aux cartes Java et aux listes d'objets JavaScript dans Rhino?

J'ai une carte qui ne contient que d'autres cartes et des listes de primitives et de chaînes, j'aimerais transmettre ceci à un script de rhinocéros et faire des affaires et retourner l'objet modifié à Java - mais comme ils sont java.util.map et java.Util.Les objets, je ne peux pas utiliser la syntaxe Standard JavaScript Associative Array Array. IE: foomap.get ("clés") fonctionnera, mais foomap.kename et foomap ["kename"] ne sera pas.

Je ne sais pas s'il y a une façon spécifique à la rhinocérité de le faire, ou s'il y a une certaine conversion / utilitaire de moulage qui vous aidera. Les Beansutils des Communes ne suffisent pas, car pour convertir une carte en un haricot (accessible via la syntaxe de réseau associatif), vous devez d'abord créer une classe qui possède tous les mutateurs / accesseurs nommés. Je ne saurai pas la structure de l'objet au moment de l'exécution.


2 commentaires

Pour cette affaire, j'aimerais pouvoir utiliser pour (var in list) {...} Syntaxe plutôt que de devoir utiliser un itérateur explicite.


FYI, numéro similaire concernant Instancitation d'objets natifs .


5 Réponses :


4
votes

Jetez un coup d'œil à Ringojs. Il a des emballages pratiques pour la liste et la carte pour rhinocéros tels que Celui-ci


0 commentaires

1
votes

https://developer.mozilla.org/fr/new_in_rhino_1. 7R3 # JS.C2.A0Objects_implément_java_collections affirme que JS Objects resp. Les tableaux peuvent désormais être lancés vers Carte resp. Liste , mais cela ne semble pas que cela fonctionnerait pour votre cas d'utilisation.


0 commentaires

2
votes

Les itérateurs semblent être la clé!

Si vous souhaitez itérer sur toutes les entrées d'une carte, vous pouvez effectuer les suivants P>

Java P>

while(parameterNames.hasNext()) {
  key = parameterNames.next();
  value = parameterMap.get(key);
}


0 commentaires

0
votes

J'ai eu un Un problème similaire qui peut être utile. J'ai essayé créé des objets de rhinocéros natifs et j'ai copié des données.


0 commentaires

0
votes

Depuis Rhino 1.7.12, vous pouvez créer ES6 Lambdas et créer votre propre fonction utilitaire, comme ceci: xxx

puis itérer comme ceci xxx


0 commentaires