read - scala play json get value




Как конвертировать POJO в JSON в Play Framework 2.3.x(Scala)? (2)

Кто-нибудь может показать мне, как преобразовать POJO или экземпляр класса в JSON в платформе Play (особенно Play v2.3.x) с помощью Scala?

Например, у меня есть такой код:

case class Foo(name: String, address: String)

def index = Action {
      request => {
        val foo = Foo("John Derp", "Jem Street 21")  // I want to convert this object to JSON
        Ok(Json.toJson(foo))    // I got error at here
      }
}

Сообщение об ошибке:

Не удается написать экземпляр сообщения com.fasterxml.jackson.data bind.JsonNode для HTTP. Попробуйте определить Writeable [com.fasterxml.jackson.databind.JsonNode]

UPDATE: я обнаружил, что Json выше ошибка вызвана неправильным импортом класса Json , это должно быть: import play.api.libs.json.Json . Однако я все еще получил ошибку по неявной проблеме ниже.

Я прочитал этот учебник , но когда я попробовал неявный код Writes[Foo] :

  implicit val fooWrites: Writes[Foo] = (
        (JsPath \ "name").write[String] and
            (JsPath \ "address").write[String]
        )(unlift(Foo.unapply))

Я получил Can't resolve symbol and Can't resolve symbol unlift ошибку смены Can't resolve symbol unlift в Intellij. Также код учебника выглядит сложным только для преобразования объекта в JSON. Интересно, есть ли более простой способ сделать это?


Вы можете получить экземпляр Writes[Foo] , используя Json.writes :

implicit val fooWrites = Json.writes[Foo]

Наличие этого неявного в области видимости - все, что вам нужно для преобразования Foo в JSON. См. Документацию здесь и здесь для получения дополнительной информации о чтении / записи JSON.


Вторая проблема - Can't resolve symbol and удается Can't resolve symbol and - это ошибка Intellij, введенная в версии 1.3 плагина Scala. В версии 1.3.3 плагина Scala теперь установлен флажок «Обходной путь - установка предпочтения»:

Языки и рамки> Scala> вкладка Core (default)> Использовать старый неявный алгоритм поиска







playframework-2.0