gpt4 book ai didi

haskell - 使用特定顺序将映射序列化为 YAML

转载 作者:行者123 更新时间:2023-12-02 10:09:41 28 4
gpt4 key购买 nike

我使用 yaml 库序列化 Map String t 类型的值(或某种类型 t)。结果输出中的顺序相当随机,这不是最理想的,因为文件应该是人类可读的。

有没有办法控制 map 的序列化顺序?或者,可能更接近问题的核心,aeson Object?如果没有,合适的解决方法是什么?

最佳答案

自 0.8.13 起,yaml 包包含 Data.Yaml.Prettty模块。这允许您配置如何漂亮地打印 yaml 文档,包括使用 setConfCompare

排序字段

在我自己的一个项目中,我started using it进行如下更改:

 writeTipToiYaml :: FilePath -> TipToiYAML -> IO ()
-writeTipToiYaml out tty = encodeFile out tty
+writeTipToiYaml out tty =
+ SBC.writeFile out (encodePretty opts tty)
+ where
+ opts = setConfCompare (compare `on` fieldIndex) defConfig
+ fieldIndex s = fromMaybe (length fields) $ s `elemIndex` fields
+ fields = map T.pack
+ [ "product-id"
+ , "comment"
+ , "welcome"
+ , "media-path"
+ , "gme-lang"
+ , "init"
+ , "scripts"
+ , "language"
+ , "speak"
+ , "scriptcodes"
+ ]

关于haskell - 使用特定顺序将映射序列化为 YAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21509691/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com