class 声明中 case class 的动态赋值
Dynamic assignment of case class in a class declaration
我们有两种情况 classes 具有不同的参数。例如-
case class OneType(@JsonProperty("column1") column1 : String,
@JsonProperty("column2") column2 : Map[String,Any],
@JsonProperty("column3") column3 : Seq[String]
)
case class AnotherType(@JsonProperty("column1") column1 : String,
@JsonProperty("column2") column2 : BigInt,
@JsonProperty("column3") column3 : Map[String,String]
)
这两个 case classes 将用于反序列化传入的 JSON 消息(通过将它们与 case class 映射)。它们需要在另一个 class 声明中使用。例如-
class JSONDeserialize extends StreamManager(String, Either[Failed, OneType/AnotherType]){
}
如何将适当的大小写 class(这里是 OneType 或 AnotherType)动态分配到 JSONDeserialize class 没有重复 JSON反序列化 class?
我正在考虑 2 种方法。
1- 您可以在一个案例 class 中加入两个案例 class,就像这样:
case class T(
@JsonProperty("column1") column1 : Option[String],
@JsonProperty("column2") column2 : Option[Map[String,Any]],
@JsonProperty("column3") column3 : Option[Seq[String]],
@JsonProperty("column4") column4 : Option[String],
@JsonProperty("column5") column5 : Option[BigInt],
@JsonProperty("column6") column6 : Option[Map[String,String]]
)
而且你总是读取唯一的类型 T,它有可选字段,带有 Option,这意味着数据可能不存在,可以是 None。
2- 您可以尝试阅读 OneType
,如果失败,请阅读 AnotherType
。
我们有两种情况 classes 具有不同的参数。例如-
case class OneType(@JsonProperty("column1") column1 : String,
@JsonProperty("column2") column2 : Map[String,Any],
@JsonProperty("column3") column3 : Seq[String]
)
case class AnotherType(@JsonProperty("column1") column1 : String,
@JsonProperty("column2") column2 : BigInt,
@JsonProperty("column3") column3 : Map[String,String]
)
这两个 case classes 将用于反序列化传入的 JSON 消息(通过将它们与 case class 映射)。它们需要在另一个 class 声明中使用。例如-
class JSONDeserialize extends StreamManager(String, Either[Failed, OneType/AnotherType]){
}
如何将适当的大小写 class(这里是 OneType 或 AnotherType)动态分配到 JSONDeserialize class 没有重复 JSON反序列化 class?
我正在考虑 2 种方法。
1- 您可以在一个案例 class 中加入两个案例 class,就像这样:
case class T(
@JsonProperty("column1") column1 : Option[String],
@JsonProperty("column2") column2 : Option[Map[String,Any]],
@JsonProperty("column3") column3 : Option[Seq[String]],
@JsonProperty("column4") column4 : Option[String],
@JsonProperty("column5") column5 : Option[BigInt],
@JsonProperty("column6") column6 : Option[Map[String,String]]
)
而且你总是读取唯一的类型 T,它有可选字段,带有 Option,这意味着数据可能不存在,可以是 None。
2- 您可以尝试阅读 OneType
,如果失败,请阅读 AnotherType
。