【发布时间】:2012-08-28 04:47:18
【问题描述】:
我有一个 JSON 字符串,例如
use JSON::XS qw(decode_json);
say Dumper( decode_json($json) );
将产生:
$VAR1 = {
'Fname' => 'SomeFname',
'Lname' => 'SomeLname',
'Addr' => {
'Street => 'Somestreet',
'Zip' => '00000',
},
};
我正在寻找一种将 JSON 字符串(或 perl 结构)“转换”为 Perl/Moose 对象的简单方法,例如:
package My;
use Moose;
has 'Fname' => (is => 'rw', isa => 'Str');
has 'Lname' => (is => 'rw', isa => 'Str');
has 'Addr' => (is => 'rw', isa => 'My::Addr');
和
package My::Addr;
use Moose;
has 'Street' => (is => 'rw', isa => 'Str');
has 'Zip' => (is => 'rw', isa => 'Str');
问题有两部分:
- 基于 JSON 字符串定义 Moose 类层次结构(一次性)
- 使用来自 JSON 的真实值初始化对象实例(对于每个 JSON)
我对 Moose 不是很熟练,所以需要一些链接来解决这个特定问题。
(Moose 很大 - 所以在 CPAN 中阅读 所有内容 肯定会有所帮助,但对于开始来说太多了。因此我正在寻找在现实世界问题中逐步学习的方法 - 比如以上)。
主要问题是:
- 是否可以从数据结构中生成 Moose 类定义(perl 源)?存在这样的CPAN模块吗?
- 当我得到类层次结构时(例如,如果这里没有任何帮助,我可以手动编写它们),从 JSON 创建(初始化)它们的实例的最简单方法是什么?
【问题讨论】:
标签: json perl serialization code-generation moose