Scala Lift - 将模型返回为json对象

时间:2012-04-17 11:23:10

标签: json scala lift

我有以下内容:

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字符串。

任何人都可以对如何使这项工作有所了解吗?

任何帮助都非常感谢,提前感谢:)

1 个答案:

答案 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))