MongoDBBSONObjectID Lost In JSON Encode from MongoDB


MongoDBBSONObjectID Lost In JSON Encode from MongoDB

我遇到了从MongoDB数据库检索ObjectID的问题,但是"_id"值在json_encode运行时总是消失。我的数组中的所有其他数据都存在。我的代码是这样的:

$data = array('_id' => new MongoDB'BSON'ObjectID(), 'title' => 'abc123');
 //ID Is there!
 print_r($data);
 //ID IS EMPTTYy!!!
 print_r(json_encode($data));
 exit();

结果如下所示:

Array ( [_id] => MongoDB'BSON'ObjectID Object ( [oid] => 56d9d2687e34d70d3a304c46 ) [title] => abc123 ) 
{"_id":{},"title":"abc123"}

至少,_id中应该有一个对象或数字。我的问题是,是什么剥离了''MongoDB''BSON''ObjectID,我怎样才能让它留下来?

我的问题是,是什么剥离了''MongoDB''BSON''ObjectID

json_encode将仅对遇到的对象的public属性进行编码。

我怎样才能让它留下来?

您可以在编码之前将其转换为字符串。

>@malarzm答案的示例代码:

$output = [];
foreach( $data as $key => $val){
    $val->_id = strval($val->_id);
    $output[$key] = $val;
}
echo json_encode( $output );