首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将Perl对象转换为JSON,反之亦然

如何将Perl对象转换为JSON,反之亦然
EN

Stack Overflow用户
提问于 2010-11-15 22:48:51
回答 2查看 28.7K关注 0票数 24

我在文件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和对象之间进行转换?

EN

回答 2

Stack Overflow用户

发布于 2010-11-15 23:05:32

您是否尝试按照错误消息中的建议读取allow_blessedconvert_blessed选项上的JSON documentation?这应该解释了如何将Perl对象转换为JSON。

另一种方法比较困难,因为JSON不是YAML,并且没有被设计成像Perl那样的基于类的对象系统,您可以尝试使用filter_json_objectfilter_json_single_key_object选项,也可以对解码后的JSON进行后处理,然后自己创建对象。

票数 5
EN

Stack Overflow用户

发布于 2010-11-16 00:09:41

您可能会发现将类转换为Moose并使用MooseX::Storage对其进行序列化和反序列化非常有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4185482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档