Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过提升json序列化和反序列化json对象_Json_Scala - Fatal编程技术网

通过提升json序列化和反序列化json对象

通过提升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

当我想要反序列化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反序列化为游戏案例类。不幸的是,我遇到以下错误:

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添加了一张罚单。以下链接显示了解决方法: