Десериализация классов case с помощью свойств Map [String, Any] с помощью lift-json

Я боролся с чем-то, что должно быть простым с помощью 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"))))?

6
задан Jeremy 19 February 2011 в 14:26
поделиться