2010-10-12 5 views
0

D'abord, désolé pour mon mauvais anglais.Convertir l'objet incorrect de JSON

Deuxièmement, mon problème.
J'essaie de convertir en JSON et sauvegarder cette structure:

class Revision{ 
    private String auth; 
    private HashMap<String, List<HashMap<String, Object>>> rev; 

    public String getAuth(){ 
     return auth; 
} 

    public HashMap<String, List<HashMap<String, Object>>> getRev(){ 
     return rev; 
} 

    public void setAuth(String auth){ 
     this.auth = auth; 
} 

    public void setRev(HashMap<String, List<HashMap<String, Object>>> rev){ 
     this.rev = (HashMap<String, List<HashMap<String, Object>>>) rev.clone(); 
} 

    public String toString(){ 
     return "Auth: " + auth + ", rev: " + rev; 
} 
} 

je le fais avec ce code:

public static void main (String[] argc){ 
    Gson gson = new Gson(); 
    Revision revision = new Revision(); 

    HashMap<String, List<HashMap<String, Object>>> HM = new HashMap<String, List<HashMap<String, Object>>>(); 
    List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>(); 
    HashMap<String, Object> HMin = new HashMap<String, Object>(); 

    HMin.put("id", 12); 
    HMin.put("type", "toster"); 
    list.add(HMin); 
    HM.put("mark", list); 

    revision.setRev(HM); 
    revision.setAuth("ololo"); 

    String json = gson.toJson(revision); 

    Revision test = new Gson().fromJson(json, Revision.class); 

    System.out.println(json); 
    System.out.println(revision); 
    System.out.println(test); 
} 

Dans enfin j'obtenir ce résultat:

{"auth":"ololo","rev":{"mark":[{"id":12,"type":"toster"}]}} 
Auth: ololo, rev: {mark=[{id=12, type=toster}]} 
Auth: ololo, rev: {mark=[{[email protected], [email protected]}]} 

Comme vous pouvez voir, après la conversion, les paramètres de type d'objet incorrects.
S'il vous plaît, pouvez-vous me dire comment résoudre ce problème?

Merci d'avance!

+0

Problème de méthode toString()? – vstoyanov

+0

Je ne pense pas. J'essaie de le faire: HashMap >> HMout = new HashMap >>(); HMout = (HashMap >>) test.getRev(). Clone(); System.out.println (((HMout.get ("mark")). Get (0)). Get ("id"). ToString()); Et j'obtiens ** [email protected]** comme résultat = ( – JackTheCat

Répondre

0

Essayez-le et voyez s'il fonctionne? Oui, je sais que vous voulez soutenir le type Object, mais c'est juste pour essayer.

Gson gson = new Gson(); 
Revision revision = new Revision(); 

HashMap<String, List<HashMap<String, String>>> HM = new HashMap<String, List<HashMap<String, String>>>(); 
List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); 
HashMap<String, String> HMin = new HashMap<String, String>(); 

HMin.put("id", "12"); 
HMin.put("type", "toster"); 
list.add(HMin); 
HM.put("mark", list); 

revision.setRev(HM); 
revision.setAuth("ololo"); 

String json = gson.toJson(revision); 

Revision test = new Gson().fromJson(json, Revision.class); 

System.out.println(json); 
System.out.println(revision); 
System.out.println(test); 

[Modifié]

Maintenant, essayez cet extrait directement, avec un changement correspondant dans Revision classe.

Revision test = new Gson().fromJson("{\"auth\":\"ololo\",\"rev\":{\"mark\":[{\"id\":12,\"type\":13}]}}", Revision.class); 
System.out.println(test); 

modifier dans Revision classe à cela,

HashMap<String, List<HashMap<String, Integer>>> HM = new HashMap<String, List<HashMap<String, Integer>>>(); 

Ceci est de faire en sorte que son travail bien avec le type spécifique. Si c'est le cas, nous serons sûrs qu'il ne peut pas fonctionner avec le type Obejct. Ensuite, vous pouvez déposer un bug là-bas, pour leur bien. Et pour le moment, vous pouvez passer à une autre API, si vous le souhaitez. Vous pouvez trouver quelques options here.

+0

j'essaye de faire ceci, mais j'ai l'erreur ici ** revision.setRev (HM); ** Si je change l'objet en chaîne dans la révision -type vous travaillez le code! – JackTheCat

+0

@ user473032: Vérifiez mon addenda –

+0

Adeel Ansari: Oui, cela fonctionne correctement.J'essaierai de trouver une autre API de votre lien.Merci de l'aide! – JackTheCat