0

私は次のものを持っています:

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\"}"] 

明らかに、私は1つのアイテムだけを返そうとしているので、配列にラップされている理由がわからず、json文字列をエスケープしているようです.

これを機能させる方法について、誰かが光を当てることができますか?

どんな助けでも大歓迎です、事前に感謝します:)

4

1 に答える 1

0

JsonResponse として何を送信しようとしていたのかわかりませんが、応答 val は List[JValue] です。write(response(0)) を呼び出すと、リスト内の最初の JValue が文字列にシリアル化されます。次に、その 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 に答える