这将是@KonstantineRybnikov关于Return JSON from yesod handler的另一个问题。
如果我想要一个专门的持久性查询selectList
并且所有结果数据必须返回JSON格式怎么办?它的代码是什么?
这是我的代码(从@KonstantineRybnikov的代码中采用):
-- JSON
import Data.Aeson (object, (.=))
import qualified Data.Aeson as J
import Yesod.Core.Json (returnJson)
getImagesR :: Handler Value
getImagesR = do
images <- runDB $ selectList [ImagesFilename !=. ""] [Desc ImagesDate]
return $ object (if null images then [] else [] -- i want the result of my perstent to be in a JSON FORMAT)
``
希望你帮我谢谢你。答案 0 :(得分:1)
我想你的主要问题是selectList
会返回Entity Record
列表(其中Record
是您要查询的类型)而不是Record
,所以我们&#39 ; ll必须使用map entityVal
获取记录列表(Entity
中定义了entityVal
)。你的处理程序将如下所示:
getImagesR = do
images <- runDB $ selectList [ImagesFilename !=. ""] [Desc ImagesDate]
returnJson (map entityVal images)
现在只需将[Record]
转换为JSON即可。幸运的是,这可以通过将单词json
添加到持久模型定义(as shown here)来自动完成。