是否可以在PyYAML
Ruby的Psych
引擎中禁用创建锚和引用(并有效地显式列出冗余数据)?
也许我在搜索网络时错过了一些东西,但是似乎没有太多可用的选项,Psych
而且我也无法确定是否PyYAML
允许这样做。
理由是我必须序列化一些数据并将其以可读的形式传递给不是真正技术的同事以进行手动验证。某些数据是多余的,但为了可读性我需要以最明确的方式列出(锚和引用是提高效率的很好概念,但对于人类可读性而言却不是)。
Ruby和Python是我选择的工具,但是如果还有其他一些“展开” YAML文档的相当简单的方法,它可能也可以。
我在PyYAML网站(http://pyyaml.org/ticket/91)上找到了这个相关的票证,看起来可以通过使用自定义转储程序来禁用锚,如下所示:
import yaml
class ExplicitDumper(yaml.SafeDumper):
"""
A dumper that will never emit aliases.
"""
def ignore_aliases(self, data):
return True
因此,例如,可以使用标准转储程序和新的显式转储程序实现以下输出:
>>> yaml.dump([1L, 1L])
"[&id001 !!python/long '1', *id001]\n"
>>> yaml.dump([1L, 1L], Dumper=ExplicitDumper)
'[1, 1]\n'
您可以自定义更多属性,以确保在yaml.dump(...)
呼叫中打印精美等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句