2012-04-17 42 views
0

我有以下幾點:斯卡拉電梯 - 收益模型爲JSON對象

object API_Chat extends RestHelper { 

    serve { 

     var response = Chat.findAll(

      ("room" -> "aroom") 
      ~ 
      ("handle" -> "ahandle") 

     ).map(_.asJValue) 

     JsonResponse(write(response(0)) :: Nil) 

    } 

} 

我試圖做的是返回一個包含所有從模型聊天值的JSON對象。

當我得到的迴應但它看起來是這樣的:

["{\"name\":\"J1M\",\"_id\":\"4f8d55b240d41dcad5c3f982\",\"target\":\"all\",\"time\":1334662578,\"room\":\"jroom\",\"value\":\":)\",\"user\":\"j1m\",\"handle\":\"f1aaa95db5150a6330552e30918728b5\",\"level\":\"_1\"}"] 

很顯然,我試圖返回只有一個項目如此不確定爲什麼它包裹在一個陣列,也似乎躲過了JSON字符串。

任何人都可以照亮如何使這項工作?

任何幫助非常讚賞,提前:)

回答

0

感謝我不知道你正在嘗試發送作爲JsonResponse,但你的反應val爲一個列表[JValue。調用write(response(0))會將列表中的第一個JValue序列化爲字符串。然後,您將該串連接到Nil以生成包含單個元素的List [String]。 JsonResponse.apply的單一參數版本需要一個JValue,所以在net.liftweb.json.JsonDSL(seq2jvalue)中將Seq [A]轉換爲JArray的隱式轉換正在被調用.....這就是爲什麼你是看到一個JSON數組作爲響應。

如果你只是想返回的第一個元素,你應該能夠使用:

JsonResponse(response(0))