сериализация и десериализация объекта json с помощью Lift-JSON - PullRequest
1 голос
/ 09 февраля 2010

У меня есть исключение из lift-json, когда я хочу десериализовать строку 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. К сожалению, я получаю следующую ошибку:

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)

Я ценю ваши комментарии, Спасибо, -

PS - я пробовал v2M2 (снимок @ 10 февраля 2010 г. от Scala-tools.org), исключение прошло, но сериализация не верна! Смотрите комментарии ниже.

1 Ответ

2 голосов
/ 09 февраля 2010

Поддержка сериализации scala.Map была добавлена ​​несколько дней назад. Это будет в Lift-2.0-M2, который выйдет через день или два. Если вам нужна эта функция сейчас, вы можете попробовать ночной снимок.

Обратите внимание, что @BeanInfo и явные значения не нужны в случае классов. Вы можете просто определить:

case class Game(id: Int, bad: Map[String, Plan], good:Map[String,Plan])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...