2012-04-17 6 views
0

としてリターンモデル:私がやろうとしているScalaのリフト - 私は、次のしている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\"}"] 

その配列に包まれた理由を明らかに私はわからない項目を1つだけ返すようにしようとしている、また、JSON文字列をエスケープしているようです。

誰でもこの作業を行う方法について光を当てることはできますか?

任意の助けに感謝、事前に感謝:)

答えて

0

私はあなたのJsonResponseとして送信しようとしていたかわからないんだけど、あなたの応答valが[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)) 
関連する問題