【问题标题】:perl mongDB to_json howto convert an ISODate, What is the right way to serialize Datetime objectperl mongoDB tojson如何转换ISODate,序列化Datetime对象的正确方法是什么
【发布时间】:2013-11-06 07:11:41
【问题描述】:

我有 一个 mongoDB:

我的 $data = $newspapers->find_one({_id => 2000});

last_mdb_update 是 $data 中的日期时间,是 mongoDB 中的 ISODate

$result = to_json($data, { ascii => 1, utf8 => 1, pretty => 1 } );

我收到一个错误: 遇到对象“2013-11-06T06:45:16”,但未启用 allow_blessed 和 convert_blessed 设置

注意: 我可以做,修复和序列化,但这是一个丑陋的解决方法,只适用于该领域:

$data->{last_mdb_update} = ''.$data->{last_mdb_update};

$result = to_json($data, {ascii => 1, utf8 => 1, pretty => 1, convert_blessed => 1 } ); 说 (...) 也不可用 TO_JSON 方法

ISODate 的 TO_JSON 方法是什么?

【问题讨论】:

    标签: perl mongodb to-json


    【解决方案1】:

    默认情况下,MongoDB ISODate 对象在 Perl MongoDB 驱动程序中以 DateTime 对象的形式返回。您收到的错误听起来像是来自与 MongoDB 无关的 JSON 序列化库。

    JSON 没有原生的 datetime 类型,所以如果你想序列化它,你需要先将 DateTime 对象转换为某种数字或字符串。

    【讨论】:

    • 我们需要为 Object ISODate 做 TO_JSON 方法
    【解决方案2】:
    sub DateTime::TO_JSON {
        { "".shift }
    }
    
    my $result = to_json( $data, { utf8 => 1, pretty => 1, convert_blessed => 1 } );
    

    有效!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      相关资源
      最近更新 更多