在Perl中从Moose对象的JSON输出中删除_类
我正在用perl处理moose对象。我希望能够将我创建的moose对象直接转换为JSON 但是,当我使用MooseX::Storage来隐藏对象时,它包含一个隐藏属性,我不知道如何删除“在Perl中从Moose对象的JSON输出中删除_类,json,perl,serialization,moose,Json,Perl,Serialization,Moose,我正在用perl处理moose对象。我希望能够将我创建的moose对象直接转换为JSON 但是,当我使用MooseX::Storage来隐藏对象时,它包含一个隐藏属性,我不知道如何删除“\uuuu CLASS\uuu” 有没有办法使用MooseX::Storage删除此文件?(目前,我只是使用MooseX::Storage对其进行转换,并使用JSON通过哈希删除“\uuuuuuu类\uuuuuuuuuuu”属性。)我现在所做的解决方案是一个问题,因为每次获得每个对象的JSON时,我都必须这样做(
\uuuu CLASS\uuu
”
有没有办法使用MooseX::Storage删除此文件?(目前,我只是使用MooseX::Storage对其进行转换,并使用JSON通过哈希删除“\uuuuuuu类\uuuuuuuuuuu”属性。)我现在所做的解决方案是一个问题,因为每次获得每个对象的JSON时,我都必须这样做(因此,当我将JSON输出写入文件时,要加载,我必须每次都进行更改,并且还必须处理任何引用的对象)
MooseX::Storage
并不特别适合此任务。它的设计目的是启用Moose对象的持久存储(这就是为什么它添加了\uuuuuu CLASS\uuuuu
字段),以便您的程序以后可以检索它们
如果您的目标是为JSON API构造对象,那么直接将对象的hashref传递给JSON.pm可能会容易得多
use JSON -convert_blessed_universally;
my $json_obj = JSON->new->allow_blessed->convert_blessed;
my $jsonString = $json_obj->encode( $componentObject );
-convert\u founded\u universal
选项(除了一口)将导致JSON.pm将founded引用(对象)视为可以直接转换为JSON的普通Perl结构
编辑:看起来您还必须将
允许受祝福的
和转换受祝福的
选项添加到JSON对象。MooseX::Storage
并不特别适合此任务。它旨在启用Moose对象的持久存储(这就是它添加类
字段的原因)因此,您的程序可以稍后检索它们
如果您的目标是为JSON API构造对象,那么直接将对象的hashref传递给JSON.pm可能会容易得多
use JSON -convert_blessed_universally;
my $json_obj = JSON->new->allow_blessed->convert_blessed;
my $jsonString = $json_obj->encode( $componentObject );
-convert\u founded\u universal
选项(除了一口)将导致JSON.pm将founded引用(对象)视为可以直接转换为JSON的普通Perl结构
编辑:看起来您还必须向JSON对象添加
允许受祝福
和转换受祝福
选项。这不就是您要存储的对象的类名吗?您为什么要尝试摆脱它?在这里,您实际要实现什么?我正在尝试使用JSON API“类”对于我正在使用的api无效,并且api不会接受JSON对象。这不是给了你正在存储的对象的类名吗?你为什么要尝试摆脱它?你到底想实现什么,在这里?我正在尝试使用JSON api,即“类”对于我正在使用的api无效,并且api不会接受JSON对象。这有一个小问题,我希望能够将该项推回到moose对象中,是否可以使用$JSON_obj->decode?当然可以,但是您需要直接使用构造函数,因为JSON数据不保留任何类关联Example::Component->new(%{$json_obj->decode})
这有一个小问题,我希望能够将该项推回到moose对象中,使用$json_obj->decode可以吗?当然可以,但您需要直接使用构造函数,因为json数据不保留任何类关联。因此类似于示例::组件->新建(%{$json_obj->decode})