Używam PHP do połączenia z MongoDB. Mój kod jest następujący.Jak przywrócić dane JSON z php MongoCursor
Chcę zwrócić kolekcję $ customers jako dokument json do mojego HTML. Jak mogę to zrobić?
Używam PHP do połączenia z MongoDB. Mój kod jest następujący.Jak przywrócić dane JSON z php MongoCursor
Chcę zwrócić kolekcję $ customers jako dokument json do mojego HTML. Jak mogę to zrobić?
Można to zrobić na dwa sposoby:
echo json_encode(iterator_to_array($customers));
lub można ręcznie przewijać go:
foreach($customers as $k => $row){
echo json_encode($row);
}
Każdy z obiektów MongoDBs powinien mieć swoje __toString()
metod prawidłowo wdrożone przywrócić reprezentację wartość.
To również zadziała. Możesz także dostosować swój 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);
Inne odpowiedzi pracować, ale dobrze jest wiedzieć, że wygenerowany JSON będzie mieć następującą postać (w tym przykładzie używam hipotetyczny polu „Nazwa” dla swoich klientów):
{
"5587d2c3cd8348455b26feab": {
"_id": {
"$id": "5587d2c3cd8348455b26feab"
},
"name": "Robert"
},
"5587d2c3cd8348455b26feac": {
"_id": {
"$id": "5587d2c3cd8348455b26feac"
},
"name": "John"
}
}
Jeśli więc nie chcesz, aby Obiekt _id
był kluczem do każdego z obiektów wyników, możesz dodać parametr false
do . Twój kod byłoby:
echo json_encode(iterator_to_array($customers, false), true);
Stwarza to taki sam wynik jak
$result = Array();
foreach ($customers as $entry) {
array_push($result, $entry);
}
echo json_encode($result, true);
który jest tablicą JSON obiektów
[
{
"_id": {
"$id": "5587d2c3cd8348455b26feab"
},
"name": "Robert"
},
{
"_id": {
"$id": "5587d2c3cd8348455b26feac"
},
"name": "John"
}
]
'foreach ($ klientów jak $ k => $ row) {$ newa [] = json_encode ($ row); } 'możesz najpierw przekonwertować typy obiektów do czystego ciągu, ale tak samo jak' MongoId' – Sammaye