Ich versuche, einen einfachen Json-Parser in meinem Haskell-Code zu installieren. Ich stieß auf Data .Aeson schien wie eine tragfähige Lösung für mein ProblemDer erwartete Typ 'Data.ByteString.Lazy.Internal.ByteString' konnte nicht mit dem tatsächlichen Typ '[Char]' verglichen werden.
ich die example code on the page folgte, und mit einigen kleineren Modifikationen, hier ist, was ich habe:
{-#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
Ausführen des folgenden in GHCi die böse Nachricht im Titel führt erscheinen:
decode "{\"f_name\":\"Haskell\", \"l_name\":\"Curry\",\"age\":114}" :: Maybe Person
Also, hat jemand hier eine Idee, was schief gelaufen ist? Ich folgte dem Beispielcode fast genau so, wie er geschrieben wurde, also warum scheitert es?
'decode' erwartet einen' ByteString' und Sie haben ein normales String-Literal (Typ von '[Char]') angegeben. Sehen Sie http://hackage.haskell.org/package/bytestring –
das Beispiel folgte ich verwendet eine normale Zeichenfolge ... Sie würden das Beispiel auf hackage.haskell.org wird richtig geschrieben ... –
Sie müssen wahrscheinlich tun ': setze -XOverloadedStrings' in GHCi vor dem Aufruf von' decode'. – fjh