При попытке проанализировать несколько простых JSON с помощью Aeson я получаю ошибку типа, которую я не понимаю.У меня есть следующий JSON
jsonString = "[\"a\", [\"b\", \"c\"]]" :: L.ByteString
, и я определил следующий импорт и код:
import Data.Aeson
import GHC.Generics
import qualified Data.ByteString.Lazy as L
data Ch = Ch {
c1 :: String,
c2 :: (String, String)
} deriving (Show, Generic)
instance FromJSON Ch
Когда я пытаюсь использовать eitherDecode
в этой строке с моим типом Ch
Я получаю сообщение об ошибке
*Aeson> eitherDecode jsonString :: Either String Ch
Left "Error in $: expected record (:*:), encountered Array"
Может кто-нибудь объяснить мне ошибку и сказать, как я должен проанализировать этот JSON?
Подход, который будет работать, это
eitherDecode jsonString :: Either String (String, (String, String))
, но я бы предпочел перейти к своему типу напрямую.