Return JSON 基于来自 yesod 处理程序的持久查询
Return JSON based on Persistent Query from yesod handler
这将是@KonstantineRybnikov 关于 Return JSON from yesod handler 的附加问题。
如果我想要一个持久查询,具体 selectList
并且所有结果数据必须 return 为 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)
``
希望你能帮助我谢谢。
我猜你的主要问题是 selectList
returns Entity Record
的列表(其中 Record
是你查询的类型)而不是 Record
,因此我们必须使用 map entityVal
获取记录列表(entityVal
在 Entity
中定义)。您的处理程序将如下所示:
getImagesR = do
images <- runDB $ selectList [ImagesFilename !=. ""] [Desc ImagesDate]
returnJson (map entityVal images)
现在只需要将[Record]
转换为JSON即可。幸运的是,这可以通过将单词 json
添加到持久模型定义 (as shown here) 来自动完成。
这将是@KonstantineRybnikov 关于 Return JSON from yesod handler 的附加问题。
如果我想要一个持久查询,具体 selectList
并且所有结果数据必须 return 为 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)
``
希望你能帮助我谢谢。
我猜你的主要问题是 selectList
returns Entity Record
的列表(其中 Record
是你查询的类型)而不是 Record
,因此我们必须使用 map entityVal
获取记录列表(entityVal
在 Entity
中定义)。您的处理程序将如下所示:
getImagesR = do
images <- runDB $ selectList [ImagesFilename !=. ""] [Desc ImagesDate]
returnJson (map entityVal images)
现在只需要将[Record]
转换为JSON即可。幸运的是,这可以通过将单词 json
添加到持久模型定义 (as shown here) 来自动完成。