如何正确使用Yesod中的parseJsonBody?

时间:2013-11-21 16:41:07

标签: json haskell yesod aeson

我对Haskell相对较新,我目前正在评估Yesod作为REST服务的基础。我希望能够使用JSON编码数据进行通信。

我有一个使用Persistent存储数据的类型类,它是ToJSONFromJSON的一个实例。但是,我只能使用Yesod.Core.Json.parseJsonBody_解码发送给处理程序的实例。

如何正确使用parseJsonBody?我需要添加类型注释吗?如何从结果中提取解码后的实例?请注意,我对Haskell还不是很熟悉。

1 个答案:

答案 0 :(得分:2)

我想,我需要添加一个正确的类型签名,以使parseJsonBody识别我要解析的实例:

import qualified Data.Aeson as J

postTestR :: Handler Value
postTestR = do
  newTest <- parseJsonBody :: Handler (J.Result Test)
  case newTest of
    J.Error s -> ...
    J.Success a -> ...

当我查看parseJsonBody_的来源以及它本身如何使用parseJsonBody时,我理解了这个问题。