2017-07-12 6 views
1

Comment puis-je sérialiser un objet au format suivantComment sérialiser un JSON avec une clé d'objet comme identifiant?

"niveau": { "3": "abc", "1": "ddf"}

J'utilise GSON pour la sérialisation ?

+0

vous pouvez toujours utiliser 'JSONObject'. –

+1

Faire une hashmap de paire de valeur clé pour générer le contenu interne ({"3": "abc", "1": "ddf"}) ... puis à la fin mettre en JSONObject avec le niveau clé ... –

+0

vous pouvez créer deserializer personnalisé (serializer) –

Répondre

1

vous pouvez créer la classe de cette façon et utiliser @SerializedName (KEY)

public static class Parent { 

    Level level; 

    public Level getLevel() { 
     return level; 
    } 

    public void setLevel(Level level) { 
     this.level = level; 
    } 

    public static class Level { 
     @SerializedName("1") 
     String valueOne; 
     @SerializedName("2") 
     String valuethree; 

     public String getValueOne() { 
      return valueOne; 
     } 

     public void setValueOne(String valueOne) { 
      this.valueOne = valueOne; 
     } 

     public String getValuethree() { 
      return valuethree; 
     } 

     public void setValuethree(String valuethree) { 
      this.valuethree = valuethree; 
     } 
    } 
} 

et utiliser

//initial 
Gson gson = new Gson(); 
Parent parent = new Parent(); 
Parent.Level level = new Parent.Level(); 
//set value 
level.setValueOne("abc"); 
level.setValuethree("ddf"); 
parent.setLevel(level); 

//convert to String 
String str = gson.toJson(parent); 
Log.i("=============", str); 
+1

1,2 ne sont pas des clés statiques. C'est dynamique, Hashmap fonctionne pour mon cas, merci pour l'aide – Anu