2013-06-24 11 views
7

私はYesodのハンドラから最も単純なJSON応答を作成しようとしていますが、実際には愚かなエラー(明らかに)があります。私のハンドラのコードはこれです:私はあまりにも、このいずれかで捕まったyesodハンドラから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... 

答えて

6

:あなたは自分の型シグネチャを変更する必要があり、それが動作します:

getEchoR :: String -> Handler Value 

-- 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 

エラーはこれです

私の理解では、RepodシステムはYesod 1.2で廃止されているので、HandlerはRepHtmlやRepJsonではなくHtmlとValueを返すようになりました。

希望すると便利です。

+0

Yesod 1.2の変更点については、このドキュメント(https://github.com/yesodweb/yesod/wiki/Detailed-change-list)を確認することをお勧めします。 – thoferon

関連する問題