2013-06-24 10 views
7

Próbuję napisać najprostszą odpowiedź JSON od obsługi Yesod, ale mam naprawdę głupi błąd (podobno). Mój kod obsługi jest taka:Powrót JSON z obsługi Takod

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

Błąd to:

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

Odpowiedz

6

I został złapany przez ten jeden też: po prostu trzeba zmienić podpis typu i będzie działać:

getEchoR :: String -> Handler Value 

Rozumiem, że cały system Rep jest przestarzały w Yesod 1.2, więc teraz Handler zwraca Html i wartość zamiast RepHtml i RepJson.

Mam nadzieję, że to pomoże!

+0

Może warto sprawdzić ten dokument (https://github.com/yesodweb/yesod/wiki/Detailed-change-list) pod kątem zmian w Yesod 1.2. – thoferon