0

我有以下内容:

object API_Chat extends RestHelper {

    serve {

        var response = Chat.findAll(

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

        ).map(_.asJValue)

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

    }

}

我想要做的是返回一个 json 对象,其中包含模型 Chat 中的所有值。

当我收到回复时,它看起来像这样:

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

显然我试图只返回一个项目,所以不确定为什么它包含在一个数组中,而且它似乎已经逃脱了 json 字符串。

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

非常感谢任何帮助,在此先感谢:)

4

1 回答 1

0

我不确定您要作为 JsonResponse 发送什么,但您的响应 val 是 List[JValue]。调用 write(response(0)) 会将 List 中的第一个 JValue 序列化为 String。然后,您将该 String 与 Nil 连接以创建一个包含单个元素的 List[String]。JsonResponse.apply 的单参数版本采用 JValue,因此将调用将 Seq[A] 转换为 JArray 的 net.liftweb.json.JsonDSL (seq2jvalue) 中的隐式转换.....这就是为什么将 JSON 数组视为响应。

如果您只想返回第一个元素,您应该可以使用:

JsonResponse(response(0))
于 2012-04-17T16:13:58.410 回答