无法解码 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 并为其实现 FromJSONToJSON,即使像我的情况一样,它只有一个 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"