2016-07-14 45 views
0

鑑於以下JSON:JSON到GSON建模

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

我有下面的類模型建立

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

獲取途徑:

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

我已經驗證configValue.toString ()以String格式返回適當的JSON。

問題是showDonation返回爲false。我似乎無法弄清楚爲什麼。 campaignEnabled被正確地返回,這與有什麼關係showDonation是第一個元素?

感謝, Otterman

回答

0

嘗試在類改變showDonationshow_Donation

+0

工作致謝!任何想法爲什麼指定@SerializedName沒有照顧它? – Otterman

+0

我不是100%肯定的,但我的猜測是,如果你使用'JSONObject'而不是'Gson',它就會工作。現在,看起來'showDonation'獲得布爾值的默認java值,該值爲false。 –

0

您的java結構不正確。

它應該是這樣的:

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

無論你的Java結構或註解不正確,或您的JSON包含不必要的子對象。

請嘗試以下操作。它將在不改變模型結構的情況下工作結果配置對象的campaignEnabled和showDonation屬性將爲true:

 String configValue = "{\"show_donation\": true,\"campaignEnabled\": true}"; 
    RMHCConfigModel config = new Gson().fromJson(configValue.toString(), RMHCConfigModel.class);