【问题标题】:Blessed objects conversion to JSON受祝福的对象转换为 JSON
【发布时间】: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_oidPtrNetSNMP::OID 类的 Perl 对象?
  • 您不能直接在 JSON 中序列化祝福对象,因为它没有存储数据结构类的标准方法。您可以将另一个元素添加到存储类名的基于散列的对象中,但这不允许基于其他数据类型的不太常见的类。如果您没有使用 JSON 的要求,那么您可以使用像 FreezeThawStorable 这样的不太便携的东西。您应该阅读 PerlMonks 上的 Object Serialization Basics

标签: json perl blessed


【解决方案1】:

这取决于,您想保留视觉效果吗?还是数据和层次结构?无法以其他终端尺寸呈现相同的位置。我会只保留数据和层次结构。可能我会忽略焦点和事件。我会开始 umarating 像下面这样的属性,然后创建一个工厂 这些是我为 Box 找到的那些

container.options
container.position, 
container.getLines()
container.getText()
container.getContent
container.children
container.parent
container.style
container.type
container.visible
container.height
container.hidden
container.index

子类有行、数据、行等等...我不认为有一种机械的方式来做...

如果要重新创建层次结构,还需要迭代子级和父级,可能是整个树。

想一想也许只用 this.options 就足够了,孩子和父母......祝你好运会尝试同样的......

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2011-05-24
    • 2011-11-14
    • 2011-01-20
    相关资源
    最近更新 更多