J'essaie de générer une structure de données dans le code JavaScript et de traiter les résultats à partir de Java (Rhino en Java 6 ou 7).Comment convertir une structure de données JSON produite par Rhino (NativeObject) en une structure de données Java?
je réussi à appeler la fonction JS de Java en utilisant:
Object result = invocableEngine.invokeFunction(functionName, parameters);
Maintenant, sur le côté JS, ce résultat est une structure de données JSON comme suit:
{
"key1" : { "key1_1" : "value1_1", "key1_2" : 11 },
"key2" : [ { "key2_1": "foo2"
, "key2_1" : "bar2" },
{ "key2_1": "foo2"
, "key2_1" : "bar2"
, "key2_3" : [1,2,3] } ]
}
Du côté Java, cependant, "résultat" est un objet de type sun.org.mozilla.javascript.internal.NativeObject
Y at-il un moyen pour moi de le convertir en une structure de données Java raisonnable, sans avoir la surcharge de sérialiser ce JSON à une chaîne, puis en utilisant Gson pour l'analyser?
Supposons pour le moment que la structure de données est raisonnablement bien définie, par ex. Je sais que l'objet est un hachage avec les clés "key1" et "key2", les premières cartes à un hachage avec les clés "key1_1" et "key1_2"; la seconde correspond à un tableau de hachages, chacun d'entre eux ayant les clés "key2_1" et "key2_2" qui sont scalaires et "key2_3" qui est un tableau.
Mes 2 priorités sont, dans cet ordre:
- Performance (ce qui est l'une des raisons pour laquelle je me méfie des serialize + Gson-parse)
- portabilité entre Java 6, 7 et 8 (cependant , Je préférerais une solution non portable matériellement plus rapide).
est-il un problème avec le laisser au format Rhino et y accéder grâce à ces données structure? Je reconnais que cela aurait un peu de frais généraux mais je ne pense pas qu'il existe des alternatives sans conversion en chaîne et désérialisation. – ghostbust555
@ ghostbust555 - Je pense que "l'accès via le format Rhino" est une approche valable, mais je ne sais pas comment procéder.Il ne semble pas y avoir de documentation décente que je peux trouver, en particulier pour les hachages – DVK
huh. wow ils ont juste la pire documentation de tous les temps. Essayez result.getAttributes ("key1")? – ghostbust555