2016-07-14 39 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);