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コレクションをjsonドキュメントとしてHTMLに返したいです。これどうやってするの?
これは2つの方法で実行できます。
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"
}
}
したがって、オブジェクトを各結果オブジェクトのキーにしたくない場合は、にパラメータを_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"
}
]