【问题标题】:How do I use parseJsonBody in Yesod properly?如何在 Yesod 中正确使用 parseJsonBody?
【发布时间】:2013-12-06 06:27:16
【问题描述】:

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

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

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

【问题讨论】:

  • 你能澄清一下这个问题吗?我不清楚你遇到了什么问题。
  • @MichaelSnoyman :我无法为parseJsonBody 添加正确的类型签名,因为这些类型让我很困惑。 @wit:我读过这个,但我想使用更简单的函数将正文转换为 JSON。此外,我还想利用脚手架 Yesod 应用程序的优点。此外——在我看来——文档对新手不太友好。

标签: json haskell yesod aeson


【解决方案1】:

我发现,我需要添加一个正确的类型签名来让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 本身时,我明白了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-12
    • 2014-04-19
    • 2018-07-28
    • 2020-11-13
    • 1970-01-01
    • 2012-04-04
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多