2013-01-09 9 views
7

PHPを使用してMongoDBに接続しています。私のコードは以下の通りです。PHPからJSONデータを返す方法MongoCursor

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

$customers = $db->customer->find(); 

$ customersコレクションをjsonドキュメントとしてHTMLに戻したいとします。これどうやってするの?

echo json_encode(iterator_to_array($customers)); 

または手動でスクロールすることができ:

+2

'foreachの($顧客オブジェクトである

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

と同じ結果を作成します行){$ newa [] = json_encode($行); } 'MongoId'のようにオブジェクト型を純粋な文字列に変換する必要があるかもしれません – Sammaye

答えて

15

あなたは、この2つの方法で行うことができます

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

MongoDBsオブジェクトの各の表現を取り戻すために正しく実装彼らの__toString()メソッドを持っていなければなりません値。

8

これも機能します。そして、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

このソリューションは、jsonにコンマを追加するために優れています。+1 – ianaz

+0

@ianazカンマは何ですか? – Sammaye

+0

@ianaz複数の値をコレクションから区切るカンマ。 – Jack

3

他の回答は動作しますが、発生したJSONは、次の形式(この例では、私はあなたの顧客のために架空の「名前」フィールドを使用)持っていることを知って良いです:

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

をオブジェクト_idをそれぞれの結果オブジェクトのキーにしたくない場合は、パラメータをiterator_to_arrayに追加することができます。 あなたのコードは次のようになります。

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

これはJSONの配列は、$ K => $として

[ 
    { 
     "_id": { 
      "$id": "5587d2c3cd8348455b26feab" 
     }, 
     "name": "Robert" 
    }, 
    { 
     "_id": { 
      "$id": "5587d2c3cd8348455b26feac" 
     }, 
     "name": "John" 
    } 
] 
関連する問題