12

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に返したいです。これどうやってするの?

4

3 に答える 3

21

これは2つの方法で実行できます。

echo json_encode(iterator_to_array($customers));

または、手動でスクロールできます。

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

各MongoDBオブジェクト__toString()には、値の表現を戻すためのメソッドが正しく実装されている必要があります。

于 2013-01-09T09:59:36.940 に答える
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);
于 2013-01-09T10:00:04.253 に答える
4

他の回答も機能しますが、生成されたJSONは次の形式になることを知っておくとよいでしょう(この例では、顧客に架空の「名前」フィールドを使用します)。

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

したがって、オブジェクトを各結果オブジェクトのキーにしたくない場合は、にパラメータを_id追加できます。コードは次のようになります。falseiterator_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"
    }
]
于 2015-06-23T07:55:43.977 に答える