加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是否可以使用Ruby或Python禁用锚点/引用来发出有效的YAML?

发布时间:2020-12-17 03:37:52 所属栏目:百科 来源:网络整理
导读:是否可以在PyYAML或 Ruby的Psych引擎中禁用创建锚点和引用(并有效地列出冗余数据)? 也许我在搜索网页时遗漏了一些东西,但似乎在Psych中没有多少选项,我无法确定PyYAML是否允许这样做. 基本原理是我必须序列化一些数据并将其以可读的形式传递给非真正技术的
是否可以在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(…)调用中进行漂亮的打印等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读