我正在使用的课程如下:
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.