java - Gson在JAVA Android中将 boolean 值从1反序列化为false

标签 java android json gson

我正在使用的类如下:

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 数组项,因为它们完全相同。

我无法正确解析 boolean 字段 jobActive 和 offsiteAllowed,它们总是解析为 false,即使 JSON 值为 1。

除 boolean 值外,我的 TheJob 类中的其他所有内容都完美反序列化

如有任何建议,我们将不胜感激。

最佳答案

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

关于java - Gson在JAVA Android中将 boolean 值从1反序列化为false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39456049/

相关文章:

java - CannotLoadBeanClassException : Cannot find class [org. springframework.jdbc.datasource.DriverManagerDataSource]

java - token "void"上的语法错误,@ expected

android - @PUT 如何通过 Retrofit 在 web 服务中产生一些值(value)

android - Android 中 Database Helper 类的单例与静态内部类

r - asJSON(keep_vec_names=TRUE) 的输入是一个命名向量。在未来的 jsonlite 版本中,将不支持此选项

json - 为什么在 Swift 中尝试序列化 JSON 时会出现错误?

java - 获取图像的高度和宽度时,ImageObserver 字段的用途是什么?

java - 如何部署tomcat7-maven-plugin?

android - 等待 Android Volley 中的所有请求

javascript - 访问 strg 名称为数字的对象