我们有一个用Perl Dancer编写的restweb服务。它以YAML格式返回perl数据结构,还接受YAML格式的参数——它应该与其他一些使用Python查询它的团队一起工作。在
问题是——如果我只是通过Dancer的序列化返回一个常规的旧perl散列,那么一切都可以正常工作。JSON,YAML,XML。。。他们都做这项工作。在
然而,,有时我们需要将Perl对象返回,Python可以将这些对象作为参数传入,以帮助处理不必要的加载等。我反复研究发现,YAML是Dancer中唯一能处理Perl祝福对象的对象。在
问题是Python的YAML不能解析Perl对象的YAML(而它可以毫无问题地处理常规的Perl哈希YAML)。在
在YAML中,perl对象是这样开始的:
第一个:
--- &1 !!perl/hash:Sequencing_API
第二:
--- !!perl/hash:SDB::DBIO
它是这样错误的。在
yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:perl/hash:SDB::DBIO'
常规文件似乎是这样传递的:
---
fields:
library:
似乎是---
之后的额外内容导致了这些问题。我能做些什么来解决这个问题?还是我试图通过传递Perl对象来做太多的事情?在
简单的回答是
!!
是tag:yaml.org,2002:
的简写。。。因此!!perl/hash
实际上是{现在您需要告诉pythonyaml如何处理这种类型
所以您可以为它添加一个构造函数,如下所示
或者干脆把它解析出来或者一个也不返回。。。很难用那条线来测试。。。但这可能就是你想要的
相关问题 更多 >
编程相关推荐