Haskell 使用Data.YAML解析一个文件中的多个YAML文档
从代码开始,我得到了一些快速工作的东西,可以解析YAML文件中的todo任务项列表 但如果我再添加第二个文档,Haskell 使用Data.YAML解析一个文件中的多个YAML文档,haskell,yaml,Haskell,Yaml,从代码开始,我得到了一些快速工作的东西,可以解析YAML文件中的todo任务项列表 但如果我再添加第二个文档,Data.Yaml.decode不再解码任何内容,只返回Nothing 像这样: --- - name: > this is a test task state: finished - name: > this is a second test task state: todo --- - name: noname
Data.Yaml.decode
不再解码任何内容,只返回Nothing
像这样:
---
- name: >
this is a test task
state: finished
- name: >
this is a second test task
state: todo
---
- name: noname
state: nostate
我想知道在使用Data.YAML进行解析时,是否可以使用YAML的documents特性
还是我做错了什么
代码如下:
{-# LANGUAGE OverloadedStrings #-}
import Data.Yaml
import Control.Applicative -- <$>, <*>
import Data.Maybe (fromJust)
import qualified Data.ByteString.Char8 as BS
data Task = Task { name :: String,
state :: String }
deriving (Show)
instance FromJSON Task where
parseJSON (Object v) = Task <$>
v .: "name" <*>
v .: "state"
-- A non-Object value is of the wrong type, so fail.
parseJSON _ = error "Can't parse Task from YAML/JSON"
main = do
ymlData <- BS.readFile "/tmp/test2.yaml"
let users = Data.Yaml.decode ymlData :: Maybe [Task]
-- Print it, just for show
print $ fromJust users
{-#语言重载字符串}
导入数据.Yaml
导入控件。应用程序--,
导入数据。可能(fromJust)
将符合条件的Data.ByteString.Char8作为BS导入
数据任务=任务{name::String,
状态::字符串}
派生(显示)
实例FromJSON任务,其中
parseJSON(对象v)=任务
v.:“姓名”
五..“国家”
--非对象值的类型错误,因此失败。
parseJSON=错误“无法从YAML/JSON解析任务”
main=do
ymlData您需要…
来分隔文档,如下所示:
---
- name: >
this is a test task
state: finished
- name: >
this is a second test task
state: todo
...
---
- name: noname
state: nostate
我要试试这个。