MongoDB \ BSON \ ObjectID потерян в кодировке JSON из MongoDB

У меня проблема с извлечением ObjectID из базы данных MongoDB, но значение _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 и как я могу заставить его остаться?

2

Решение

Мой вопрос заключается в том, что убирает \ MongoDB \ BSON \ ObjectID

json_encode будет кодировать только public свойства встречаемых объектов.

как я могу заставить его остаться?

Вы можете преобразовать его в строку перед кодированием.

4

Другие решения

пример кода для ответа @ malarzm:

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

echo json_encode( $output );
0

По вопросам рекламы [email protected]