0

私はフレームワークとスカラ言語を初めてプレイします。私がしたいことは、配列リストをjsonに変換したいのですが、Javaでは、最初に値をリストに保存してから、このようにリストをjsonに変換しますpublic static Result getJson(){ List<Task> abc = Task.all(); return ok(toJson(abc)); }

このコードを使用して同じことを達成しましたが、scalaで同じアプローチを試みているときに機能しません:コードは def jsonTask= Action { var jsonValue:List[Task] = Task.all() Ok(views.html.display(Json.toJson(jsonValue))) }エラーに直面しています::

タイプ List[models.Task] の Json デシリアライザーが見つかりません。この型の暗黙の Writes または Format を実装してみてください。

誰かが私に同じ解決策を教えてくれます。

4

5 に答える 5

1

解決策を見つけました。

モデル クラスで暗黙のライターを定義します。

implicit val implicitTaskWrites = new Writes[Task] {
def writes(taskobj: Task): JsValue = {
  Json.obj(
    "id" -> taskobj.id,
    "label" -> taskobj.label
  ) 
} 

}

これにより、各 Task (私のモデル クラス) オブジェクトが JsValue オブジェクトに変換されます。それで

   def parse(list :List[Task]) :String ={

     var json=new JsArray()
     for(task:Task <- list ){
        json=json.append(Json.toJson( task ) )
     }

     json.toString()
 }

このコードも追加します。

次に、 parse(list) を呼び出すと、json 文字列を取得できます。

于 2013-08-09T07:46:36.520 に答える
0

display.scala.html @(jsonTasks: play.api.libs.json.JsValue) にパラメーターを指定する必要があります。

于 2013-08-06T09:01:51.233 に答える