Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 使用aeson为json中不可用的字段提供默认值_Haskell_Aeson - Fatal编程技术网

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

Haskell 使用aeson为json中不可用的字段提供默认值,haskell,aeson,Haskell,Aeson,我正在尝试使用Aeson库加载json。问题是,我要加载到的数据结构包含的字段比json多 data Resource = Res { name :: String, file :: FilePath, res :: Picture, loaded :: Bool } deriving (Generic, Show) 其

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

data Resource = Res {
                  name :: String,
                  file :: FilePath,
                  res :: Picture,
                  loaded :: Bool
                } deriving (Generic, Show)
其中,json中只有名称和文件字段可用。图片是一个有光泽的图片,所以不能从json加载


我不知道如何省略res并从FromJSON实例中加载。

如果不能从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

如果无法从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

如果不是JSON输入,那么这些信息应该来自哪里?稍后在读取JSON后加载图片,同时也将设置加载的字段。我猜加载的图片默认为false,但问题仍然是如何做到这一点。但是当图片未加载时,
res
的值应该是什么?因为这不是java,所以不能为
null
,它必须是一张图片。如果希望它能够是
null
您必须将类型更改为
可能是Picture
。我想我可以试试,加载时也是这样。使它们都可以定义res,因为Maybe Picture仍然会给出一个错误:没有(FromJSON Picture)的实例,如果不是来自JSON输入,那么该信息应该来自何处?稍后在读取JSON后加载图片,同时也会设置加载字段。我猜加载的图片默认为false,但问题仍然是如何做到这一点。但是当图片未加载时,
res
的值应该是什么?因为这不是java,所以不能为
null
,它必须是一张图片。如果希望它能够是
null
您必须将类型更改为
可能是Picture
。我想我可以试试,加载时也是这样。让他们都定义res,因为可能图片仍然会给出错误:没有(来自JSON图片)的实例,就在我写下基本相同的答案之前33秒:)谢谢,我几乎最终做了这样的事情。我可以问一个后续问题吗?因为当前我读取文件内容的方式很混乱,因为常规的readFile没有输出ByteString。我怎样才能解决这个问题呢?就在我写下基本相同答案的33秒之前:)谢谢,我几乎最终做了类似的事情。我能问一个后续问题吗?因为当前我读取文件内容的方式很混乱,因为常规的readFile没有输出ByteString。我怎样才能解决这个问题?