2012-04-17 43 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))