perl mongoDB to_json如何转换ISODate,序列化Datetime对象的正确方法是什么

时间:2013-11-06 07:11:42

标签: perl mongodb to-json

我有 一个mongoDB:

我的$ data = $ newspaper-> 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方法是什么?

2 个答案:

答案 0 :(得分:1)

默认情况下,MongoDB ISODate对象在Perl MongoDB驱动程序中作为DateTime对象返回。你听到的错误听起来像来自JSON序列化库,它与MongoDB无关。

JSON没有本机日期时间类型,因此如果要序列化它,则需要先将DateTime对象转换为某种数字或字符串。

答案 1 :(得分:0)

sub DateTime::TO_JSON {
    { "".shift }
}

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

有效!