Perl 从Moose类生成JSON模式

Perl 从Moose类生成JSON模式,perl,jsonschema,moose,Perl,Jsonschema,Moose,我有perl Moose类。我能够从JSON数据中为每个类生成Moose对象(JSON->new->convert\u-founded->utf8->pretty->encode($mooseObj);),还可以从Moose对象中生成JSON文档(bless(JSON->new->decode($JSON),'class\u-NAME');) 然而,我无法找到从Moose类生成JSON模式的方法。每个Moose类都需要这个模式,以便浏览器客户端验证发送到服务器端的JSON数据。目前,我的方法是手

我有perl Moose类。我能够从JSON数据中为每个类生成Moose对象(
JSON->new->convert\u-founded->utf8->pretty->encode($mooseObj);
),还可以从Moose对象中生成JSON文档(
bless(JSON->new->decode($JSON),'class\u-NAME');


然而,我无法找到从Moose类生成JSON模式的方法。每个Moose类都需要这个模式,以便浏览器客户端验证发送到服务器端的JSON数据。目前,我的方法是手工编写JSON模式,但它有许多缺点(每次Moose类更改时,JSON模式都需要更新;手动错误;耗时;嵌套类有点困难;无法映射枚举类型;等等)。我看到了关于从Java类、C#类、XSD、Objective C类等生成JSON模式的文章,但没有从perl或Moose类生成JSON模式。非常感谢您提供的任何信息。

您所描述的是错误的。生成对象的示例是用于存储的代码。另外,这种方法也不是很聪明,因为附加的驼鹿行为和所有MOP的东西都不会正常工作,如果你只是
bless
到一个使用驼鹿的包中。你应该改用。正是为了这个目的。就你的实际问题而言,这将是困难的。Moose使用(或可以使用)的类型不是Perl中包含的类型。它们通常只是验证某些东西的函数。一旦你偏离了驼鹿带来的东西,它就会。。。很棘手,除非在类型中包含序列化元魔术。如果您有这样的能力,那么您应该能够编写一些东西,使用MOP递归地遍历类,从而吐出JSON模式。如果你这样做了,请在CPAN上发布。你所描述的是错误的方法。生成对象的示例是用于存储的代码。另外,这种方法也不是很聪明,因为附加的驼鹿行为和所有MOP的东西都不会正常工作,如果你只是
bless
到一个使用驼鹿的包中。你应该改用。正是为了这个目的。就你的实际问题而言,这将是困难的。Moose使用(或可以使用)的类型不是Perl中包含的类型。它们通常只是验证某些东西的函数。一旦你偏离了驼鹿带来的东西,它就会。。。很棘手,除非在类型中包含序列化元魔术。如果您有这样的能力,那么您应该能够编写一些东西,使用MOP递归地遍历类,从而吐出JSON模式。如果是,请在CPAN上发布。