2015-01-07 18 views
6

Bất cứ ai cũng có thể chỉ cho tôi cách chuyển đổi POJO hoặc cá thể lớp thành JSON trong khung Play (đặc biệt là Play v2.3.x) bằng Scala?Làm thế nào để chuyển đổi POJO sang JSON trong khung Chơi 2.3.x (Scala)?

Ví dụ tôi có mã như thế này:

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 
     } 
} 

Các thông báo lỗi:

Không thể ghi một thể hiện của bind.JsonNode com.fasterxml.jackson.data để đáp ứng HTTP. Cố gắng xác định một writeable [com.fasterxml.jackson.databind.JsonNode]

UPDATE: tôi phát hiện ra lỗi trên là do nhập khẩu sai của lớp Json, nó phải là: import play.api.libs.json.Json. Tuy nhiên tôi vẫn gặp lỗi về vấn đề tiềm ẩn bên dưới.

Tôi đã đọc this tutorial, nhưng khi tôi thử ngầm Writes[Foo] mã:

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

tôi đã Can't resolve symbol andCan't resolve symbol unlift lỗi trong Intellij. Ngoài ra mã của hướng dẫn có vẻ phức tạp chỉ để chuyển đổi một đối tượng thành JSON. Tôi tự hỏi nếu có cách đơn giản hơn để làm điều này?

Trả lời

7

Bạn có thể lấy một ví dụ Writes[Foo] bằng cách sử dụng Json.writes:

implicit val fooWrites = Json.writes[Foo] 

Có điều này tiềm ẩn trong phạm vi là tất cả các bạn cần phải chuyển đổi Foo để JSON. Xem documetnation herehere để biết thêm thông tin về cách đọc/ghi JSON.

+0

Hi, cảm ơn rất nhiều. Bạn có biết tôi có thể tìm thấy tài liệu hướng dẫn hoặc tài liệu hướng dẫn đơn giản về cách sử dụng Json trong Play 2.3 không? Ngoài ra, bạn có thể giải thích lỗi 'Không thể giải quyết biểu tượng và' (và 'không thay thế') trong nội dung ẩn ban đầu mà tôi đã thử không? (xem câu hỏi được cập nhật, tôi đã đặt mã ở đó) – null

+1

Để giải quyết lỗi biểu tượng bạn cần nhập 'play.api.libs.functional.syntax._'. Các liên kết tài liệu mà tôi đã cung cấp sẽ trả lời câu hỏi của bạn về 'unlift' cũng như chứa đủ thông tin chung về Play JSON. – edi

+1

Xin chào, một lần nữa, cảm ơn rất nhiều sự giúp đỡ. Tôi tự hỏi tại sao Intellij không thể phát hiện việc nhập khẩu. – null

1

Vấn đề thứ hai - Can't resolve symbol and - là một Intellij bug được giới thiệu trong phiên bản 1.3 của plugin Scala. Trong phiên bản 1.3.3 của các plugin Scala, bây giờ có một cách giải quyết khác - thiết lập hộp kiểm thích:

Ngôn ngữ & Khung> Scala> Core (mặc định) tab> Sử dụng cũ thuật toán tìm kiếm ngầm

Các vấn đề liên quan