【问题标题】:Does salat support de/serialization of type Either in scala?salat 是否支持 scala 中类型 Either 的反序列化?
【发布时间】:2015-12-10 10:59:25
【问题描述】:

我有以下案例类:

case class DataEntity
(
  name: String,
  value: Either[Complex, String]
)
case class Complex (x: String, y: String)

据我所见,序列化(写入 MongoDB)运行良好,但反序列化失败:

com.novus.salat.util.ToObjectGlitch: 

  argument type mismatch

  $anon$2(class catalog.DataEntity @ com.novus.salat.global.package$$anon$1@3fa48431) toObject failed on:
  SYM: catalog.DataEntity
  CONSTRUCTOR
public catalog.DataEntity(java.lang.String,scala.util.Either<catalog.Complex, java.lang.String>)

---------- CONSTRUCTOR EXPECTS FOR PARAM [0] --------------
NAME:         name
TYPE:         java.lang.String
DEFAULT ARG   [Missing, but unnecessary because input value was supplied]
@Ignore       false
---------- CONSTRUCTOR INPUT ------------------------
TYPE: java.lang.String
VALUE:
TESTTEXT
------------------------------------------------------------


---------- CONSTRUCTOR EXPECTS FOR PARAM [1] --------------
NAME:         value
TYPE:         scala.util.Either<catalog.Complex, java.lang.String>
DEFAULT ARG   [Missing, but unnecessary because input value was supplied]
@Ignore       false
---------- CONSTRUCTOR INPUT ------------------------
TYPE: com.mongodb.BasicDBList
VALUE:
[ [ "File" , "/bin/ls" ...
------------------------------------------------------------

上面的输出手动匹配上面的简化案例类。 我正在使用 salatDAO 读取和写入 DB。

【问题讨论】:

    标签: mongodb scala salat


    【解决方案1】:

    Either 当前不受支持。我已经相应地更新了“支持的类型”wiki。

    请注意,在 Salat 1.10.0-SNAPSHOT 中,您将收到如下错误(尝试从 JSON 字符串反序列化时):

    scala> SalatExamples.eitherHolder()
    serialized EitherHolder(Left(data)) to { "_typeHint" : "com.novus.salat.examples.EitherHolder" , "either" : [ "data"]} for storage in mongo
    
    com.novus.salat.json.UnsupportedJsonTransformationException: serialize: Unsupported JSON transformation for class='scala.util.Left', value='Left(data)'
    
    NOTE: salat has certain limitations. It cannot deserialize JSON into case classes having fields such as:
    - Arrays such as Array[String]
    - Nested collections such as Map[String, List[String]]
    - Optional collections such as Option[List[String]]
    
    For more information, please visit: https://github.com/salat/salat/wiki/SupportedTypes
    

    https://github.com/salat/salat/wiki/SupportedTypes

    另见:https://github.com/noahlz/salat-examples/blob/master/src/main/scala/com/novus/salat/examples/SalatExamples.scala

    【讨论】:

      猜你喜欢
      • 2013-12-27
      • 1970-01-01
      • 2019-10-07
      • 2014-06-30
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      相关资源
      最近更新 更多