2013-08-06 9 views
0

我是新玩框架工作以及Scala語言,我想我想將我的ArrayList轉換成JSON,在Java中我第一次存儲值到列表中,然後轉換列表轉換成這樣public static Result getJson(){ List<Task> abc = Task.all(); return ok(toJson(abc)); }雖然從數據庫面向錯誤檢索字符串到JSON

JSON通過這個代碼我實現了相同的,但是當我試圖在Scala中相同的方法,然後它不工作:代碼def jsonTask= Action { var jsonValue:List[Task] = Task.all() Ok(views.html.display(Json.toJson(jsonValue))) }和我面臨的錯誤::

無Json反序列化器找到的類型爲List [models.Task]。嘗試爲此類型實現隱式Writes或Format。

有人給我同樣的解決方案。

回答

1

我找到了解決方案。

在您的模型類中定義一個隱式編寫器。

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

}

這將每個任務(我的模型類)對象轉換成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字符串。

0

您能否向我們發送您的查看文件?

您是否嘗試在.scala.html文件中使用scala.List參數,而不是List

編輯:你爲什麼發送JSON到你的視圖?你不應該直接返回Json(Ok(JsArray(jsonValue))),還是在你的視圖中使用你的列表?

+0

我將列表更改爲Scala.List,但它不工作,給了我 –

+0

內的空值的數組,並且它不工作而沒有查看。 –

+0

如果我不使用視圖,那麼它會給我帶來類似於 {「empty」:false,「traversableAgain」:true} –

0

你必須給一個參數在display.scala.html @(jsonTasks:play.api.libs.json.JsValue)

+0

沒有看到它給了我在數組中的空值,但與視圖它給我一個錯誤,在我將列表轉換爲JSON的點,所以無法檢查您的解決方案。 –

+0

我已經看到了Adrien Aubel和你的意見,如果你正在獲取列表中的值,請通過導入「import net.liftweb.json。{NoTypeHints,Serialization}」來嘗試「Ok(Serialization.write(list))」 – Pranjut

+0

不工作.. :(反正謝謝 –

0

您可以在圖書館play.libs.Json 使用的toJSON方法步驟: 第一步: import play.libs.Json;

然後使用

ok(JSon.toJson(list)); 

到顯示轉換JSON。

+0

已經試過了,不工作,btw謝謝 –

0

我得到的結果,但與不同的方法..

我使用的密鑰的方法,價值map`val結果= SQL( 「SELECT * FROM運動」)。適用()

變種a:Int = 0 for(a < - 0 to results.length-1) {val jsonrec = Json.obj(「id」 - > results(a)Long,「label」 - > results(a)String ) output.add(jsonrec) }'...

但是,如果我得到的答案可能會更好w ith我採用的方法併發布了問題..

相關問題