我在文件Point.pm
中定义了一个Point对象,如下所示:
package Point;
sub new {
my ($class) = @_;
my $self = {
_x => 0,
_y => 0,
};
return bless $self => $class;
}
sub X {
my ($self, $x) = @_;
$self->{_x} = $x if defined $x;
return $self->{_x};
}
sub Y {
my ($self, $y) = @_;
$self->{_y} = $y if defined $y;
return $self->{_y};
}
1;
现在,当我使用JSON通过以下代码将对象转换为JSON时:
use JSON;
use Point;
Point $p = new Point;
$p->X(20);
$p->Y(30);
my $json = encode_json $p;
我得到以下错误:
encountered object 'Point=HASH(0x40017288)', but neither allow_blessed nor convert_blessed settings are enabled at test.pl line 28
如何使用JSON模块在JSON和对象之间进行转换?
发布于 2010-11-15 23:05:32
您是否尝试按照错误消息中的建议读取allow_blessed和convert_blessed选项上的JSON documentation?这应该解释了如何将Perl对象转换为JSON。
另一种方法比较困难,因为JSON不是YAML,并且没有被设计成像Perl那样的基于类的对象系统,您可以尝试使用filter_json_object或filter_json_single_key_object选项,也可以对解码后的JSON进行后处理,然后自己创建对象。
发布于 2010-11-16 00:09:41
您可能会发现将类转换为Moose并使用MooseX::Storage对其进行序列化和反序列化非常有用。
https://stackoverflow.com/questions/4185482
复制相似问题