2013-06-24 16 views
7

Yesod'un işleyicisinden en basit JSON yanıtı yazmaya çalışıyorum, ancak gerçekten aptalca bir hatam var (görünüşte).JSod, yesod işleyicisinden dön

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

cevap

6

Ben de bu biri tarafından yakalandılar: Eğer sadece tip imzasını değiştirmek zorunda ve işe yarayacak:

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 

Hata şudur: Benim işleyicisi kod budur

Anlayışım, tüm Rep sisteminin Yesod 1.2'de kullanımdan kaldırılmasından dolayı Handler'in artık RepHtml ve RepJson yerine Html ve Value değerini döndürmesidir.

Bu yardımcı olur umarız!

+0

Yesod 1.2'deki değişiklikler için bu belgeyi (https://github.com/yesodweb/yesod/wiki/Detailed-change-list) kontrol etmeniz gerekebilir. – thoferon