8

我正在尝试从 Yesod 的处理程序编写一个最简单的 JSON 响应,但有一些非常愚蠢的错误(显然)。我的处理程序代码是这样的:

-- HelloYesod/Handler/Echo.hs
module Handler.Echo where

import           Data.Aeson      (object, (.=))
import qualified Data.Aeson      as J
import           Data.Text       (pack)
import           Import
import           Yesod.Core.Json (returnJson)

getEchoR :: String -> Handler RepJson
getEchoR theText = do
  let json = object $ ["data" .= "val"]
  return json

错误是这样的:

Handler/Echo.hs:12:10:
    Couldn't match expected type `RepJson' with actual type `Value'
    In the first argument of `return', namely `json'
    In a stmt of a 'do' block: return json
    In the expression:
      do { let json = object $ ...;
           return json }
Build failure, pausing...
4

1 回答 1

7

我也被这个抓住了:你只需要改变你的类型签名就可以了:

getEchoR :: String -> Handler Value

我的理解是整个 Rep 系统在 Yesod 1.2 中已被弃用,所以 Handler 现在返回 Html 和 Value 而不是 RepHtml 和 RepJson。

希望这可以帮助!

于 2013-06-24T18:37:20.260 回答