2013-01-09 23 views
7

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ć?

+2

'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

Odpowiedz

15

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ść.

8

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); 
+1

to rozwiązanie jest lepsze, ponieważ dodaje przecinek do json .. +1 – ianaz

+0

@ianaz Co to jest przecinek? – Sammaye

+0

@ianaz Przecinek, który oddziela wiele wartości od kolekcji. – Jack

3

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" 
    } 
]