9
我試圖讓一個簡單的Json解析器啓動並運行在我的Haskell代碼中,我遇到了Data .Aeson這似乎是一個可行的解決我的問題無法匹配預期類型'Data.ByteString.Lazy.Internal.ByteString'與實際類型'[Char]'
我跟着example code on the page,並與一些小的修改,這裏就是我的了:
{-#LANGUAGE OverloadedStrings #-}
import Data.Aeson
import Data.Text
import Control.Applicative
import Control.Monad
data Person =
Person { firstName :: Text
, lastName :: Text
, age :: Int
} deriving Show
instance FromJSON Person where
parseJSON (Object v) =
Person <$> v .: "f_name"
<*> v .: "l_name"
<*> v .: "age"
parseJSON _ = mzero
運行下面的GHCI的稱號導致討厭的消息出現:
decode "{\"f_name\":\"Haskell\", \"l_name\":\"Curry\",\"age\":114}" :: Maybe Person
那麼,有沒有人有一個想法出了什麼問題?我幾乎完全按照它的寫法來跟蹤示例代碼,爲什麼它會失敗?
'decode'預計會有一個'ByteString',並且您已經給出了一個普通的字符串文字(類型爲[Char]')。看看http://hackage.haskell.org/package/bytestring –
我遵循的例子使用了一個普通的字符串...你會假設hackage.haskell.org上的例子寫得正確... –
你可能需要做':在調用'decode'之前,在GHCi中設置-XOverloadedStrings'。 – fjh