java - Gson、枚举和尝试在空对象引用上调用虚拟方法 'java.lang.Class java.lang.Object.getClass()'

标签 java android json gson

有一个 json,包含参数的 String 值,例如status 和这个 json 由 Gson 映射到 POJO 上,这个参数映射到自定义枚举上。 JSON:

{"status":"on"}

POJO

public class StatusData {
    @SerializedName("status")
    @Expose
    private Status status;
}

枚举:

public enum Status {
   @SerializedName("on")ON,
   @SerializedName("off")OFF;
}

如果 json 包含正确的值(“on”或“off”)——没问题,但如果存在不受支持的值,例如“未知”- 然后它以 Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference 粉碎。还有问题:有没有办法更改异常消息以了解出了什么问题?

最佳答案

无需创建新的enum

使用 http://www.jsonschema2pojo.org/ 生成pojo

试试这个

public class StatusData
{
    @SerializedName("status")
    @Expose
    private String status;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

关于java - Gson、枚举和尝试在空对象引用上调用虚拟方法 'java.lang.Class java.lang.Object.getClass()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49667419/

相关文章:

java - 从 Internet 服务发送短信 - 无法接收广播以检查是否已发送短信

Android:具有不同项目的 ListView (优化)

json:无法将字符串解码为 []main.KVU 类型的 Go 值

node.js - node.js 上的 gpt-3.5-turbo post 请求问题

javascript - 在 extjs 中渲染表单 html 标签中的对象

java - 从架构中检索根元素

java - 如何从 String, Android/Java 获取多个子字符串

java - Spring 使用 Redis @Cacheable

android - 从 fragment 调用 fragment

java - 将android应用程序连接到mysql