java - 找不到枚举时的枚举类映射问题

标签 java json kotlin gson

我在 kotlin 中有一个类,它是一个枚举类,如下所示

enum class Status {
  @SerializedName("open")
  OPEN,
  @SerializedName("close")
  CLOSE,
  UNKNOWN
}

我有另一个使用状态枚举类的名为 ticket 的类

class Order(
    var id: String,
    var status: Status = Status.UNKNOWN,
}

当 GSON 映射接收到的值时,出现异常,因为 status 字段现在包含一个新值 in_progress。由于此状态未在 Status 类中声明,因此发生了异常。

如何避免异常以确保如果在 GSON 中设置了新状态但未在 Status 类中定义,我得到状态 UNKNOWN

关于如何返回默认值 UNKNOWN 在我的情况下没有匹配的任何想法?

谢谢

最佳答案

如果您想走这条路,那么您的问题就是枚举。 GSON 正在等待一个枚举值,所以如果 in_progress 不是一个值,GSON 会拒绝。

您可以做的是创建一个新的数据类型并将您的枚举包装在其中,但是使用枚举的一般想法丢失了。

另一种方法是完全摆脱枚举。实现一个名为 status 的接口(interface),并为每种类型的 Status 实现一个类。这有点像枚举+。你可以用类似的东西发送你的订单 Var 状态:OrderStatus = In_Progress() 变量状态:OrderStatus = Unkonwn() 稍后您可以调用类似 instanceof 的方法来检查 OrderStatus 的类型。

编辑后: 你必须准确地说出你在等什么 GSON(见 GSON 适配器),如果你想要你描述的行为,你应该寻找其他方式来交流。

关于java - 找不到枚举时的枚举类映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52090395/

相关文章:

java - 按指定顺序运行 Maven 项目的 JUnit 测试

java - 如何将字节流图像数据放入JSON对象中?

function - Kotlin:高阶函数,如何将函数添加到集合中并调用它们

intellij-idea - 在 Intellij 的 KotlinJS 中使用 pow

java - Apache wicket 对于公共(public)站点来说是一种好的技术吗?

使用 PEM 文件的 Java SSL SOAP 客户端

java - 如何防止在 Backendless 发送和创建对象的属性

javascript - 无法使用 Highchart API 构建多级钻取图表

android - 从 json api 获取嵌套值

Java 注释无法从 Kotlin 项目 jar 中使用