使用aeson为json中不可用的字段提供默认值

时间:2017-10-18 13:10:31

标签: haskell aeson

我正在尝试使用Aeson库加载json。问题是我想要加载它的数据结构包含的字段多于json。

data Resource = Res {
                  name :: String,
                  file :: FilePath,
                  res :: Picture,
                  loaded :: Bool
                } deriving (Generic, Show)

json中只有名称和文件字段可用。图片是光泽图片,因此无法从json加载。

我无法弄清楚如何省略res并从FromJSON实例中加载。

1 个答案:

答案 0 :(得分:4)

如果您无法从JSON加载该结构,那么请不要这样定义它!做到这一点

data ResourceRef = ResRef
                { name :: String
                , file :: FilePath
                } deriving (Generic, Show)

可以从JSON轻松加载。然后你可以有一个额外的

data Resource = Res
                { resName :: String
                , resFile :: FilePath
                , res :: Picture
                } deriving (Generic, Show)

...从未与JSON联系过。并实施

loadResource :: ResourceRef -> IO Resource