9
간단한 Json 파서를 사용하고 Haskell 코드에서 실행하려고하는데 데이터를 발견했습니다. .Aeson은 내가 example code on the page을 따라 내 문제예상 유형 'Data.ByteString.Lazy.Internal.ByteString'을 실제 유형 '[Char]'과 일치시킬 수 없습니다.
에 대한 실행 가능한 해결책처럼 보였다, 그리고 약간의 수정, 여기에 내가 가진 무엇 :
{-#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의 예제가 올바르게 작성되었다고 가정합니다 ... –
아마 할 필요가 있습니다. ': set -XOverloadedStrings'을 GHCi에서 사용하기 전에'decode'를 호출하십시오. – fjh