通过提升json序列化和反序列化json对象
当我想要反序列化json字符串时,lift json有一个异常。(使用v2M1) 基本上我有以下课程:通过提升json序列化和反序列化json对象,json,scala,Json,Scala,当我想要反序列化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) 将JSONInstalling反序列化为游戏案例类。不幸的是,我遇到以下错误: ne
@BeanInfo
case class Game(val id:Int,
val bad:Map[String,Plan],
val good:Map[String,Plan])
我正在使用
net.liftweb.json.Serialization.read[Game](jsonInString)
将JSONInstalling反序列化为游戏案例类。不幸的是,我遇到以下错误:
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上的快照),异常消失了,但序列化不正确!请参阅下面的评论。几天前刚刚添加了对scala.Map序列化的支持。它将在升降机-2.0-M2中,在一两天内释放。如果您现在需要该功能,可以尝试夜间快照 注意,@BeanInfo和显式vals在case类中不需要。您可以定义:
case class Game(id: Int, bad: Map[String, Plan], good:Map[String,Plan])
实际上,这不适用于以下用例(现在使用scala工具发布的Lift JSON快照):案例类计划(计划:选项[Action])案例类游戏(游戏:Map[String,Plan])案例类行动(id:Int,子行动:选项[Action])val Game=new Game(地图(“a”->新计划(新的一些)(新的行动(1,无)'))隐式val formats=net.liftweb.json.DefaultFormats游戏必须是QUALTO(Serialization.read[game](Serialization.write(game)))我为这个bug添加了一张罚单。以下链接显示了解决方法: