无法解码 yml 文件中的数据
Can't decode data from a yml file
我想从 yml 文件中读取一些基本设置。这是我的尝试:
#config.yml
some_value: "fdsfdsfd"
#.hs
yamlData <- BS.readFile "./config.yml"
let var1 = Data.Yaml.decode yamlData :: Maybe String
print $ "the key is " ++ fromJust var1
它returns Maybe.fromJust: Nothing
。我是否必须从 some_value
创建一个 data
并为其实现 FromJSON
和 ToJSON
,即使像我的情况一样,它只有一个 String
字段?还是我的代码中的其他地方存在问题?
Should I necessarily create a data from some_value
and implement FromJSON
and ToJSON
for it even if, like in my case, it's only one String
field?
是的。
就是说,如果您不想设置自己的 FromJSON
实例,那么有一个通用的东西(Value
)可以将简单的 yaml
数据解码成:
Prelude Data.Yaml> Data.Yaml.decode "some_value: \"fdsfdsfd\"" :: Maybe Value
Just (Object fromList [("some_value",String "fdsfdsfd")])
此外,如果我们只想要统一类型的键值对,我们可以解码成 HashMap
,我们得到以下内容:
> Data.HashMap.Strict.lookup ("some_value" :: Text) =<< Data.Yaml.decode "some_value: \"fdsfdsfd\"" :: (Maybe String)
Just "fdsfdsfd"
我想从 yml 文件中读取一些基本设置。这是我的尝试:
#config.yml
some_value: "fdsfdsfd"
#.hs
yamlData <- BS.readFile "./config.yml"
let var1 = Data.Yaml.decode yamlData :: Maybe String
print $ "the key is " ++ fromJust var1
它returns Maybe.fromJust: Nothing
。我是否必须从 some_value
创建一个 data
并为其实现 FromJSON
和 ToJSON
,即使像我的情况一样,它只有一个 String
字段?还是我的代码中的其他地方存在问题?
Should I necessarily create a data from
some_value
and implementFromJSON
andToJSON
for it even if, like in my case, it's only oneString
field?
是的。
就是说,如果您不想设置自己的 FromJSON
实例,那么有一个通用的东西(Value
)可以将简单的 yaml
数据解码成:
Prelude Data.Yaml> Data.Yaml.decode "some_value: \"fdsfdsfd\"" :: Maybe Value
Just (Object fromList [("some_value",String "fdsfdsfd")])
此外,如果我们只想要统一类型的键值对,我们可以解码成 HashMap
,我们得到以下内容:
> Data.HashMap.Strict.lookup ("some_value" :: Text) =<< Data.Yaml.decode "some_value: \"fdsfdsfd\"" :: (Maybe String)
Just "fdsfdsfd"