2016-07-14 22 views
0

Angesichts der folgenden JSON:JSON Gson Modellierung

{ 
"rmhc_config": { 
    "show_donation": true, 
    "campaignEnabled": true, 
    . 
    . 
    . 

Ich habe die folgende Klasse Modell

public class RMHCConfigModel implements Serializable{ 
    @SerializedName("show_donation") 
    private boolean showDonation; 
    @SerializedName("campaignEnabled") 
    private boolean campaignEnabled; 
    . 
    . 
    . 

einrichten Zugänglich über:

Gson gson = new Gson(); 
RMHCConfigModel config = gson.fromJson(configValue.toString(), RMHCConfigModel.class); 

I verifiziert configValue.toString haben() gibt den richtigen JSON im String-Format zurück.

Das Problem ist showDonation wird zurückgegeben als false. Ich kann nicht herausfinden, warum. campaignEnabled wird korrekt zurückgegeben, hat das etwas mit zu tun showDonation ist das erste Element?

Danke, Otterman

Antwort

0

Versuche showDonation zu show_Donation in der Klasse zu ändern.

+0

Arbeitet danke! Jede Idee, warum @SerializedName angegeben wurde, hat sich nicht darum gekümmert? – Otterman

+0

Ich bin mir nicht 100% sicher, aber meine Vermutung ist, dass es funktionieren würde, wenn Sie ein 'JSONObject' anstelle von' Gson' verwenden würden. Im Moment scheint 'showDonation' den Standard-Java-Wert für boolean zu erhalten, was falsch ist. –

0

Ihre Java-Struktur ist nicht korrekt.

Es sollte so aussehen:

public class GlobalConfig { 

    @SerializedName("rmhc_config") 
    private RMHCConfigModel rmhc; 

    public static GlobalConfig fromJson(String json) { 
     return new Gson().fromJson(json, GlobalConfig.class); 
    } 

    public String toJson() { 
     return new Gson().toJson(this); 
    } 

} 

public class RMHCConfigModel { 

    @SerializedName("show_donation") 
    private boolean showDonation; 

    @SerializedName("campaignEnabled") 
    private boolean campaignEnabled; 

} 
0

Entweder Ihre Java-Struktur oder Ihre Anmerkungen sind nicht richtig, oder Ihre JSON enthält ein unnötiges Unterobjekt.

Versuchen Sie Folgendes. Es funktioniert, ohne die Struktur Ihres Modells zu ändern Die Attribute campaignEnabled und showDonation des resultierenden Objekts config werden wahr: