Intereting Posts

Как вернуть данные JSON из php MongoCursor

Я использую PHP для подключения к MongoDB. Мой код выглядит следующим образом.

// connect $m = new MongoClient($con_string); // connect to a remote host at a given port $db = $m->main; $customers = $db->customer->find(); 

Я хочу вернуть $ customers collection в качестве json-документа в свой HTML. Как я могу это сделать?

Вы можете сделать это двумя способами:

 echo json_encode(iterator_to_array($customers)); 

или вы можете вручную просмотреть его:

 foreach($customers as $k => $row){ echo json_encode($row); } 

Каждый объект MongoDB должен правильно реализовать свои методы __toString() чтобы вернуть представление значения.

Это также сработает. И вы также можете настроить свой json.

  $arr = array(); foreach($customers as $c) { $temp = array("name" => $c["name"], "phone" => $c["phone"], "address" => $c["address"]); array_push($arr, $temp); } echo json_encode($arr); 

Другие ответы работают, но хорошо знать, что сгенерированный JSON будет иметь следующую форму (в этом примере я использую гипотетическое поле «имя» для ваших клиентов):

 { "5587d2c3cd8348455b26feab": { "_id": { "$id": "5587d2c3cd8348455b26feab" }, "name": "Robert" }, "5587d2c3cd8348455b26feac": { "_id": { "$id": "5587d2c3cd8348455b26feac" }, "name": "John" } } 

Поэтому, если вы не хотите, чтобы Object _id являлся ключом каждого из ваших объектов результата, вы можете добавить false параметр в iterator_to_array . Ваш код будет:

 echo json_encode(iterator_to_array($customers, false), true); 

Это создает тот же результат, что и

 $result = Array(); foreach ($customers as $entry) { array_push($result, $entry); } echo json_encode($result, true); 

который представляет собой массив объектов JSON

 [ { "_id": { "$id": "5587d2c3cd8348455b26feab" }, "name": "Robert" }, { "_id": { "$id": "5587d2c3cd8348455b26feac" }, "name": "John" } ]