0

我有一个 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 方法是什么?

4

2 回答 2

1

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

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

于 2013-11-06T07:34:23.363 回答
0
sub DateTime::TO_JSON {
    { "".shift }
}

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

有效!

于 2013-11-06T20:58:16.450 回答