Я боролся с чем-то, что должно быть простым с помощью lift-json для дней: сериализацию карты в JSON.
Я знаю, я знаю - «Корневой объект еще не может быть списком или картой», но я готов обернуть его в класс case на данный момент, и я все еще не смог чтобы заставить это работать. Благодаря некоторой помощи при переполнении стека у меня работает сериализация, но я не могу десериализовать ее из строки. Я получаю такие ошибки, как «Нет полезного значения для _ » и «Нет информации о типе».
В Интернете есть и другие, более старые сообщения, которые указывают, что подсказки типа являются ответом, но это только наводит на мысль. к другой ошибке, например «Не знаю, как десериализовать _ _.»
Для Scala 2.8.0 и Lift 2.2:
import net.liftweb.json._
import net.liftweb.json.Serialization.{read, write}
case class MapWrap(data: Map[String, Any])
object Scaffold {
def main(args: Array[String]) {
implicit val formats = Serialization.formats(NoTypeHints)
//implicit val formats = Serialization.formats(ShortTypeHints(List(classOf[MapWrap])))
//implicit val formats = Serialization.formats(FullTypeHints(List(classOf[MapWrap])))
val ser = write(new MapWrap(Map[String,Any]("key" -> "value")))
println("JSON: " + ser)
println(read[MapWrap](ser))
}
}
Строка println (прочтите [MapWrap] (ser ))
приводит к жалобе «net.liftweb.json.MappingException: Нет полезного значения для данных».
Как я могу десериализовать эту оболочку класса case (или достичь моей конечной цели: read (write (Map ("key" -> "value"))))?