2013-04-17 4 views
0

Pouvez-vous me dire comment puis-je utiliser Gson pour extraire deux objets distincts définis dans cette chaîne: http://json.parser.online.fr/objet Gson désérialisation

je tente d'utiliser

gson.fromJson(json, SeedAttribs.class); 

et

gson.fromJson(json, SettingsAttribs.class); 

mais ni travaille. Je suis surpris pourquoi pas. Je voudrais également un moyen de remplacer cette chaîne JSON lorsque l'objet particulier par exemple. SeedAttribs changements. J'ai besoin d'un moyen de le réécrire tandis que SettingsAttribs ne changera pas du tout.

Comment cela peut-il être fait?

Merci pour vos réponses!

+0

Quelle est votre SettingsAttribs source de la classe? – user1697575

+0

il est fondamentalement juste la classe de modèle avec quelques champs de chaîne et ses méthodes de get/set ... – greengold

Répondre

0

Assurez-vous que votre chaîne JSon d'origine contient le format correct. Le meilleur moyen est de sérialiser votre objet avec GSON. Voici le code:

public static void main(String[] args) 
{ 
    Gson gson = new Gson(); 
    SettingsAttribs st = new SettingsAttribs(); 
    st.setField1("value1"); 
    st.setField2("value2"); 
    // report constructed object 
    System.out.println("st: " + st); 

    // serialize to json 
    String json = gson.toJson(st, SettingsAttribs.class); 
    System.out.println("json: " + json); 

    // deserialize form json 
    SettingsAttribs restoredSettings = gson.fromJson(json, SettingsAttribs.class); 
    System.out.println("restoredSettings: " + restoredSettings); 
} 

Il compile et s'exécute. La sortie qu'elle produit:

st: SettingsAttribs [field1=value1, field2=value2] 
json: {"field1":"value1","field2":"value2"} 
restoredSettings: SettingsAttribs [field1=value1, field2=value2] 

Et classe SettingsAttribs:

public class SettingsAttribs 
    { 
    private String field1; 
    private String field2; 

    public String getField1() 
    { 
     return field1; 
    } 

    public void setField1(String field1) 
    { 
     this.field1 = field1; 
    } 

    public String getField2() 
    { 
     return field2; 
    } 

    public void setField2(String field2) 
    { 
     this.field2 = field2; 
    } 

    @Override 
    public String toString() 
    { 
     return "SettingsAttribs [field1=" + field1 + ", field2=" + field2 + "]"; 
    } 
    } 
+0

oui, ceci est exact comme des projets gson google indique le site. Mais, s'il vous plaît, référez-vous à mon poste plus attentivement! J'aurais besoin d'un moyen de sérialiser plus par exemple. 2 objets (SettingsAttribs.class et SeedAttribs.class) et désérialiser puis, après avoir changé l'un d'entre eux, sérialiser celui qui a été changé en json string sans se mêler du tout à l'autre! Quand je lisais à propos de gson, il me semblait que cela devrait fonctionner de la même manière qu'avec un objet, mais je faisais probablement une erreur quelque part – greengold

+0

Lorsque vous changez d'objet, êtes-vous sûr de ne pas surcharger la chaîne json de l'autre objet? montrez votre code comment faites-vous cela ... – user1697575

+0

bien Im pas. Si vous lisiez plus attentivement, s'il vous plaît, vous sauriez que c'est ce que je suis en train de questionner ici. Si j'ai gson.fromJson (json, SettingsAttribs.class); puis je peux extraire des attributs de la chaîne json que contient SettingsAttribs. Mais après avoir changé cet objet, j'ai besoin d'un moyen de faire craquer un json composé de ce nouvel objet et de vieux champs qui n'ont pas été exracted de la vieille chaîne json Ne peut pas le rendre plus clair – greengold

Questions connexes