Gson在JAVA Android中将布尔值从1反序列化为false

我正在使用的课程如下:

public class TheJob {       
    private String jobDescription = null, jobAdditionalInfo = null, jobAddress = null;

    @SerializedName("jobActive")
    public boolean jobActive = true;

    @SerializedName("offsiteAllowed")
    public boolean offsiteAllowed;
}

我收到的JSON如下:

[{"jobId":"2","jobDescription":"Beta","jobAdditionalInfo":"Edited ","jobAddress":"103 Emus Avenue \nCenturion \n0157 \nSouth Africa \n","jobActive":"1","offsiteAllowed":"1"}]

我删除了其余的JSON数组项,因为它们完全相同.

我无法获取布尔字段jobActive和offsiteAllowed来正确解析,即使JSON值为1,它们也始终解析为false.

除布尔值外,TheJob类中的所有其他内容都完全反序列化

任何建议将不胜感激.

解决方法:

Gson非常注重类型.要将int值解析为布尔值,您可能必须注册一个自定义布尔值反序列化类.或者,如果您控制api更改,则返回true而不是1.它期望为“ true”,并将其他所有内容都视为false.应该有一些注册自定义JsonDeserializer类的示例.该适配器允许您执行诸如反序列化为名为isFruit的布尔变量的操作,并从API返回Apple,Orange,Carrot等.注册后,您可以实现自定义反序列化器以评估值,并根据需要将true和false反序列化为isFruit.

上一篇:java-即使将字段设置为不使用Expose进行序列化,仍会调用Gson TypeAdapter的write方法


下一篇:android-使用动态数组和对象处理gson