/ / manejo de solicitudes y respuestas json en scala play framework y envío a angular js java script - json, scala, angularjs, playframework, playframework-2.1

manejo de solicitudes y respuestas de json en el marco de scala play y envío al guión de js java angular - json, scala, angularjs, playframework, playframework-2.1

Estoy trabajando en la implementación del sistema de bibliotecas.usando play framework y angularjs. supongamos que para buscar un libro en la biblioteca, el usuario ingresa el valor de la palabra clave en el campo de entrada, el controlador recibe este valor de la solicitud GET. Necesito buscar en la base de datos MySQL la lista de libros, convertirlos a solicitud json y mostrarlos nuevamente en la página de búsqueda que se implementa usando angularjs. No entiendo cómo usar json y enviar el resultado a la página web.

GET     /books/all/search/:by/:value  controllers.Books.listBooks(by: String, value: String)



case class Book (
bookId: String,
title: String,
author: String,
category:String,
price: Int,
location: String,
status: String
)

object Book{
val bookParse = {
get[String]("book.bookId") ~
get[String]("book.title") ~
get[String]("book.author") ~
get[String]("book.category") ~
get[Int]("book.price") ~
get[String]("book.location") ~
get[String]("book.status")map {
case bookId~title~author~category~price~location~status => Book(bookId,title, author, category, price, location, status)
}
}


def searchByBookId(bookId: String) : List[Book]= {
DB.withConnection {implicit connection =>
SQL("select * from book where bookId = {bookId}").as(Book.bookParse *)
}
}



object Books extends Controller {
def listBooks(by: String, value:String): List[Book] =
{
if (by == "byBookId" )  Book.searchByBookId(value)
else if(by == "byTitle")Book.searchByTitle(value)
else Book.searchByAuthor(value)
}
}

Ahora necesito enviar el resultado de la Lista [Libro] a la página web

Respuestas

2 para la respuesta № 1
import play.api.libs.json._

implicit val bookFormat = Json.format[Book]

def listBooks(by: String, value: String) = Action {
val books = if (by == "byBookId" ) Book.searchByBookId(value)
else if(by == "byTitle")Book.searchByTitle(value)
else Book.searchByAuthor(value)
Ok(Json.toJson(books))
}

los implicit val bookFormat debe estar en el objeto complementario Libro o en el alcance cuando Json.toJson se llama.

Más documentación sobre JSON:

http://www.playframework.com/documentation/2.2.x/ScalaJson