6
votes

Comment puis-je convertir une source de données JSON fabriquée par Rhino (NativeObject) en DataStructure Java?

J'essaie de générer une structure de données à l'intérieur du code JavaScript et de traiter les résultats de Java (Rhino en Java 6 ou 7).

J'ai réussi à appeler la fonction JS de Java en utilisant: P>

{ 
  "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] } ]
}


8 commentaires

Y a-t-il un problème de la laisser dans le format de rhinocéros et d'y accéder via cette structure de données? Je reconnais que cela aurait des frais généraux mais je ne pense pas qu'il y ait des alternatives sans convertir à la chaîne et à la désérialisation.


@ Ghostbust555 - Je pense que "l'accès au format de rhinocéros" est une approche valide, mais pas sûre de la façon de faire cela. Il ne semble pas y avoir de documentation décente que je peux trouver, en particulier pour les hachages


hein. Wow, ils ont juste la pire documentation de tous les temps. Essayez le résultat.getattributes ("Key1")?


Pourquoi n'utilisez-vous pas ObjectMapper ??


Quel est spécifiquement le problème avec l'utilisation de GSON?


@Blackpop - Si vous voulez dire celui de Jackson, est-ce différent de l'utilisation de GSON? Il semble convertir JSON String, pas un NativeObject


@Bohemian - Problème n ° 1: J'ai déjà un NativeObject. Je ne pense pas que Gson fonctionne avec ça? Problème n ° 2: Je suis inquiet pour la performance (l'ajout d'une balançoire sur papier pour un fichier JSON GRAND-ISH est une préoccupation). Accordé, je n'ai pas de référence. Cela dit, j'accepterais une réponse qui s'appuie sur une analyse, mais prouve suffisamment ce n'est pas plus lent de manière significative sur les fichiers JSON plus importants (disons des tableaux de taille 1000)


@DVK Vous pouvez former un objet de JSON String. Final NativeObject PropertyObj = mapper.readvalue (Jsonstring, NativeObject .Class);


3 Réponses :


0
votes

Vous pouvez analyser n'importe quelle chaîne JSON "objet" à l'aide de gson code> en l'analysant dans un LinkedTremap code>, comme ceci:

[1.0, 2.0, 3.0]


0 commentaires

-1
votes

Vous pouvez construire un objet Java de l'intérieur de Json.

Quelque chose comme ça (je construisai de nouvelles java.lang.string, mais vous pouvez également construire votre propre classe): P>

java -jar js.jar
Rhino 1.7 release 5 2015 01 29
js> str=new java.lang.String("Hello world")
Hello world
js> java.lang.System.out.println(str)
Hello world


1 commentaires

Il a demandé quelque chose spécifiquement!



1
votes

Ceci est le code de NativeObject à JSONOBJECT. Je pense que de NativeObject à Carte est similaire. XXX


0 commentaires