【发布时间】:2017-09-25 01:11:34
【问题描述】:
如何在 Perl 中将祝福对象转换为 JSON?以下是我拥有的数组:
@x = ({
'notificationtype' => 'TRAP',
'receivedfrom' => 'UDP: [10.127.34.212]:48909->[10.127.34.182]:162',
'version' => 1,
},
[
[
bless( {
'oidptr' => bless( do{\(my $o = '140059234062224)}, ''netsnmp_oidPtr' )
}, 'NetSNMP::OID' ),
'600',
67
],
[
bless( {
'oidptr' => bless( do{\(my $o = '140059236784112)}, ''netsnmp_oidPtr' )
}, 'NetSNMP::OID' ),
'OID: .iso.org.dod.internet.private.enterprises.14296.1.100.0.0.1',
6
]
]);
我可以单独使用encode_json \@x 转换$VAR1,但是当我使用祝福对象时,它不起作用。我收到错误:
遇到对象“NetSNMP::OID=HASH(0x136b278)”,但在 u.pl 第 256 行未启用 allow_blessed 和 convert_blessed 设置。
我期望一个序列化的 JSON 对象,以便我可以将它发送到服务器。
我该怎么做?
【问题讨论】:
-
“它不工作”是什么意思?
-
另外,你期望什么输出?
-
我收到错误:遇到对象“NetSNMP::OID=HASH(0x136b278)”,但在 u.pl 第 256 行未启用 allow_blessed 和 convert_blessed 设置。
-
JSON 应该如何序列化
netsnmp_oidPtr或NetSNMP::OID类的 Perl 对象? -
您不能直接在 JSON 中序列化祝福对象,因为它没有存储数据结构类的标准方法。您可以将另一个元素添加到存储类名的基于散列的对象中,但这不允许基于其他数据类型的不太常见的类。如果您没有使用 JSON 的要求,那么您可以使用像
FreezeThaw或Storable这样的不太便携的东西。您应该阅读 PerlMonks 上的 Object Serialization Basics。