Data.Aeson FromJSON实例将数组转换为对象的最佳方式是什么:
import Data.Aeson
data MixArray = MixArray {
vStr :: String,
vNum :: Int,
vBool :: Bool
} deriving Show
main = do
jsonStr = ["a",1,true]
mix <- eitherDecode $ jsonStr :: IO (Either String [MixArray])
show mix至:
MixArray { vStr = "a", vNum = 1, vBool= true}发布于 2018-03-12 12:46:55
您可以对列表和Value类型重用FromJSON实例,然后在模式匹配后构造您的类型。如果模式匹配失败,解析器也会失败。
import Data.Text (unpack)
instance FromJSON MixArray where
parseJSON jsn = do
[String s, Number n, Bool b] <- parseJSON jsn
return MixArray { vStr = unpack s, vNum = truncate n, vBool = b }https://stackoverflow.com/questions/49227754
复制相似问题