2010-11-12 5 views
2

J'utilise gwt client. J'ai besoin d'analyser/désérialiser un JSON (contient Map) renvoyé par le serveur. Exemple de code JSON: -Deseralize un JSON (contenant HashMap) retourné par le serveur

APPLICATIONSMAP: { 

* 
    - 
    0: { 
     o name: "App 1" 
     o id: 0 
    } 
* 
    - 
    1: { 
     o name: "App 2" 
     o id: 1 
    } 
* 
    - 
    2: { 
     o name: "App 3" 
     o id: 2 
    } 

Comment désérialiser le fichier json vers Java HashMap?

Merci, Sachin

+1

Utilisez-vous Google GSon? http://code.google.com/p/google-gson/ –

Répondre

0

Si vous utilisez GWT comme dit l'étiquette, alors pourquoi faites-vous JSON-vous? GWT a un grand support de sérialisation.

+0

Je ne suis pas sûr de pouvoir utiliser la sérialisation GWT sans utiliser GWT RPC. Si possible, pourriez-vous m'envoyer le lien pour comprendre comment cela fonctionne? Nous n'utilisons pas GWT RPC. Nous avons une webapp Spring MVC qui renvoie les données en tant que client JSON vers GWT. – Sachin

1

Je ne suis pas sûr de ce que vous essayez de faire est la bonne façon de faire les choses, mais si vous voulez vraiment désérialiser d'un JSON, vous pouvez utiliser Jackson:

http://jackson.codehaus.org/

+0

J'ai un client GWT et des applications Spring MVC. L'application GWT envoie des requêtes HTTP à SPRING MVC et obtient les données en tant que réponse JSON. J'ai besoin d'analyser JSON String pour créer une HashMap. J'espère que cela t'aides. Je ne peux pas utiliser Jackson dans un client GWT car GWT ne sera pas capable de convertir les classes jackson en code javascript. – Sachin

+1

Pourquoi voudriez-vous convertir JSON en code javascript via un processeur Java JSON? JSON peut être lu en Javascript sans aucun problème. Il y a quelque chose de flou, ici, je pense. –

+0

J'utilise Google Web Toolkit (GWT) pour créer l'interface graphique et pour traiter le fichier JSON. GWT vous permet d'écrire du code en Java. Le compilateur GWT compile/convertit le code Java en Javascript/Html. D'où la nécessité d'analyser JSON en Java. – Sachin

1

Vous pourrait essayer JavaScript Overlay Types, par exemple comme ceci:

public class OverlayExample implements EntryPoint { 

    public static final class MyJsMap extends JavaScriptObject { 

     protected MyJsMap() {} 

     public native Object get(Object key) /*-{ 
      return this[key]; 
     }-*/; 

     public native void put(Object key, Object val) /*-{ 
      this[key] = val; 
     }-*/; 
    } 

    public void onModuleLoad() { 

     final String text = "[{ 1 : 'x', 2 : 'y' }]"; 
     final MyJsMap map = asJsMap(text); 
     System.out.println(map.get("1")); 
    } 

    private static native MyJsMap asJsMap(final String str) /*-{ 
     return eval(str)[0]; 
    }-*/; 
} 

Ok, ce n'est pas exactement un java.util.Map, mais si vous avez besoin que vous pourriez améliorer MyJsMap pour implémenter l'interface java.util.Map. Ou - si vous avez besoin d'un vrai java.util.HashMap - vous pouvez parcourir toutes les valeurs et les copier dans un HashMap. Dans ce dernier cas, il est probablement plus facile d'utiliser GSON, comme recommandé par @The Elite Gentleman.

+0

Je vais jeter un oeil à la première option. – Sachin