Scala Playフレームワークコントローラー、JSONとケースクラス間の変換

ttt

PlayフレームワークコントローラーがボイラープレートなしでJSONとオブジェクト(ケースクラス)の間で自動的に変換できるかどうか疑問に思っています。

SpringMVCとTwitterのFinatraがそれを行うことができるように。以下は、Finatraフレームワークのコードです。

@Singleton
class TweetsController @Inject()(
  tweetsService: TweetsService)
  extends Controller {

  post("/tweet") { requestTweet: TweetPostRequest =>
    // requestTweet is a case class mapping json request
    tweetsService.save(requestTweet)
    ...
  }

  get("/tweet/:id") { request: TweetGetRequest =>
    // case class mapping json response
    tweetsService.getResponseTweet(request.id)
    ...
  }
}

ただし、Play Frameworkの場合、JSON会話を手動で行う必要があります。Playは、暗黙的に使用せずに方法をサポートできますか?

Playがそれをサポートできない理由、または将来のリリースでサポートする理由はありますか?

tryx

この目的のために、次のユーティリティクラスを使用します

  /**
   * Framework method for handling a request that takes a Json body as a parameter. If the JSON body can be
   * parsed as a valid instance of  `A` , the resulting object is passed into the body which is expected
   * to produce a Result.
   *       
   *
   * Note that it is not necessary to create the Action object in the body of the supplied handler; this is
   * done for you.
   *
   * @tparam A A case class that the input JSON should be parsed into.
   * @param body The body of the handler for this request. This must be a function that will take an instance of `A`
   * and use it generate a `Result`.
   *
   */
  def handleJsonRequest[A : Reads](body: A => Result) = Action(parse.json) { request =>
    request.body.validate[A].map {body}.recoverTotal {
        errors: JsError =>
          throw new ...(errors)
      }
  }

これをハンドラーで次のように使用できます

def handleGet() = handleJsonRequest[Body] {body =>
  ...
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PlayフレームワークのScalaプロジェクトのJavaコントローラ?

分類Dev

Scalaを使用したPlay2フレームワークのユニットテストコントローラー

分類Dev

Scalaケースクラスの変換

分類Dev

Scala(2.11.1)&playフレームワーク(2.x)ifステートメントとFlashスコープの変数

分類Dev

Scala:リフレクションとケースクラス

分類Dev

Scala Play 2.4.xコントローラークラスチェーン?

分類Dev

scala プレイ フレームワーク json 変換

分類Dev

Scalaのケースクラスとそのコンストラクターパラメーターがスーパークラスに渡される

分類Dev

文字列jsonをScalaケースクラスに変換する

分類Dev

サブクラスをscalaテンプレートに渡すフレームワークを再生する

分類Dev

PlayフレームワークでScalaを使用してJsValueをモデルクラスに変換するにはどうすればよいですか?

分類Dev

スマートコンストラクターのScalaケースクラスの実装?

分類Dev

Scala:ケースクラスコンストラクター内で型をファーストクラス値として使用する方法は?

分類Dev

CSVとの間でネストされたScalaケースクラス

分類Dev

Scalaケースクラステスト

分類Dev

PlayのScalaテンプレートを使用してください!scala.jsのフレームワーク

分類Dev

Scalaとケースクラス

分類Dev

Scalaクラスコンストラクターの暗黙

分類Dev

Scala-コンソールベースの開発ワークフロー

分類Dev

リフレクションによるScalaクラス/ケースクラスのインスタンス化

分類Dev

テストのためにオブジェクトをコントローラーに挿入するPlay / Scala

分類Dev

Play Framework 2.3.x(Scala)でケースクラスをJSONに変換する方法は?

分類Dev

最初の本番scalaプロジェクトをブートストラップするために使用するフレームワークは何ですか?

分類Dev

パラメータという名前のscalaケースクラスにはパフォーマンスコストがありますか?

分類Dev

== Scalaのケースクラスと「非ケース」クラスの場合

分類Dev

Scalaケースクラスの継承

分類Dev

Scalaの内部ケースクラス

分類Dev

配列をScalaの列とインデックスを持つデータフレームに変換する

分類Dev

Scalaケースクラス変更不可メンバー

Related 関連記事

  1. 1

    PlayフレームワークのScalaプロジェクトのJavaコントローラ?

  2. 2

    Scalaを使用したPlay2フレームワークのユニットテストコントローラー

  3. 3

    Scalaケースクラスの変換

  4. 4

    Scala(2.11.1)&playフレームワーク(2.x)ifステートメントとFlashスコープの変数

  5. 5

    Scala:リフレクションとケースクラス

  6. 6

    Scala Play 2.4.xコントローラークラスチェーン?

  7. 7

    scala プレイ フレームワーク json 変換

  8. 8

    Scalaのケースクラスとそのコンストラクターパラメーターがスーパークラスに渡される

  9. 9

    文字列jsonをScalaケースクラスに変換する

  10. 10

    サブクラスをscalaテンプレートに渡すフレームワークを再生する

  11. 11

    PlayフレームワークでScalaを使用してJsValueをモデルクラスに変換するにはどうすればよいですか?

  12. 12

    スマートコンストラクターのScalaケースクラスの実装?

  13. 13

    Scala:ケースクラスコンストラクター内で型をファーストクラス値として使用する方法は?

  14. 14

    CSVとの間でネストされたScalaケースクラス

  15. 15

    Scalaケースクラステスト

  16. 16

    PlayのScalaテンプレートを使用してください!scala.jsのフレームワーク

  17. 17

    Scalaとケースクラス

  18. 18

    Scalaクラスコンストラクターの暗黙

  19. 19

    Scala-コンソールベースの開発ワークフロー

  20. 20

    リフレクションによるScalaクラス/ケースクラスのインスタンス化

  21. 21

    テストのためにオブジェクトをコントローラーに挿入するPlay / Scala

  22. 22

    Play Framework 2.3.x(Scala)でケースクラスをJSONに変換する方法は?

  23. 23

    最初の本番scalaプロジェクトをブートストラップするために使用するフレームワークは何ですか?

  24. 24

    パラメータという名前のscalaケースクラスにはパフォーマンスコストがありますか?

  25. 25

    == Scalaのケースクラスと「非ケース」クラスの場合

  26. 26

    Scalaケースクラスの継承

  27. 27

    Scalaの内部ケースクラス

  28. 28

    配列をScalaの列とインデックスを持つデータフレームに変換する

  29. 29

    Scalaケースクラス変更不可メンバー

ホットタグ

アーカイブ