我有以下内容:
object API_Chat extends RestHelper {
serve {
var response = Chat.findAll(
("room" -> "aroom")
~
("handle" -> "ahandle")
).map(_.asJValue)
JsonResponse(write(response(0)) :: Nil)
}
}
我要做的是返回一个包含模型Chat中所有值的json对象。
当我收到回复时,它看起来像这样:
["{\"name\":\"J1M\",\"_id\":\"4f8d55b240d41dcad5c3f982\",\"target\":\"all\",\"time\":1334662578,\"room\":\"jroom\",\"value\":\":)\",\"user\":\"j1m\",\"handle\":\"f1aaa95db5150a6330552e30918728b5\",\"level\":\"_1\"}"]
显然我试图只返回一个项目,所以不确定为什么它包裹在一个数组中,它似乎也逃脱了json字符串。
任何人都可以对如何使这项工作有所了解吗?
任何帮助都非常感谢,提前感谢:)
答案 0 :(得分:0)
我不确定你试图发送什么作为你的JsonResponse,但你的响应值是一个List [JValue]。调用write(response(0))会将List中的第一个JValue序列化为String。然后,您将该字符串与Nil连接,以生成包含单个元素的List [String]。 JsonResponse.apply的单个参数版本采用JValue,因此在net.liftweb.json.JsonDSL(seq2jvalue)中将Seq [A]转换为JArray的隐式转换正在被调用.....这就是你的原因将JSON数组视为响应。
如果您只想返回第一个元素,您应该可以使用:
JsonResponse(response(0))