当我想反序列化一个json字符串时,我有一个来自lift-json的异常。 (使用v2M1)。
基本上我有以下课程:
@BeanInfo
case class Game(val id:Int,
val bad:Map[String,Plan],
val good:Map[String,Plan])
我正在使用
net.liftweb.json.Serialization.read[Game](jsonInString)
将jsonInString反序列化为Game case类。不幸的是我收到以下错误:
net.liftweb.json.MappingException: Can't find primary constructor for class interface scala.collection.immutable.Map
at net.liftweb.json.Meta$.fail(Meta.scala:93)
at net.liftweb.json.Meta$Reflection$$anonfun$primaryConstructorOf$1.apply(Meta.scala:129)
at net.liftweb.json.Meta$Reflection$$anonfun$primaryConstructorOf$1.apply(Meta.scala:129)
at scala.Option.getOrElse(Option.scala:61)
at net.liftweb.json.Meta$Reflection$.primaryConstructorOf(Meta.scala:129)
at net.liftweb.json.Extraction$.newInstance$1(Extraction.scala:106)
at net.liftweb.json.Extraction$.build$1(Extraction.scala:119)
at net.liftweb.json.Extraction$$anonfun$2$$anonfun$apply$1.apply(Extraction.scala:119)
at net.liftweb.json.Extraction$$anonfun$2$$anonfun$apply$1.apply(Extraction.scala:119)
at scala.List.flatMap(List.scala:1132)
at net.liftweb.json.Extraction$$anonfun$2.apply(Extraction.scala:119)
at net.liftweb.json.Extraction$$anonfun$2.apply(Extraction.scala:119)
at net.liftweb.json.Extraction$.newInstance$1(Extraction.scala:106)
at net.liftweb.json.Extraction$.build$1(Extraction.scala:119)
at net.liftweb.json.Extraction$.extract0(Extraction.scala:154)
at net.liftweb.json.Extraction$.extract(Extraction.scala:37)
at net.liftweb.json.JsonAST$JValue.extract(JsonAST.scala:247)
at net.liftweb.json.Serialization$.read(Serialization.scala:50)
感谢您的评论, 谢谢, -A
PS - 我尝试了v2M2(2010年2月10日来自Scala-tools.org的快照),异常消失但序列化不正确!请参阅以下评论。
答案 0 :(得分:2)
几天前刚刚添加了对scala.Map进行序列化的支持。它将在Lift-2.0-M2中发布,在一两天内发布。如果您现在需要该功能,可以尝试夜间快照。
注意,案例类中不需要@BeanInfo和显式val。你可以定义:
case class Game(id: Int, bad: Map[String, Plan], good:Map[String,Plan])