Signatur
Beschreibung
MongoDB\BSON\fromJSON() nimmt einen gültigen JSON-String (einschließlich erweiterter MongoDB-JSON-Syntax, auch bekannt als Extended JSON) entgegen und wandelt diesen in das binäre BSON-Format (Binary JSON) um. BSON ist das native Serialisierungsformat von MongoDB und unterstützt Datentypen, die in reinem JSON nicht vorhanden sind, wie z. B. ObjectId, Date, Binary oder Decimal128.
Die Funktion ist besonders nützlich, wenn BSON-Daten für Low-Level-Operationen direkt erzeugt oder weiterverarbeitet werden sollen – etwa beim Testen, beim Importieren externer Daten oder beim Arbeiten mit dem MongoDB-Treiber auf einer niedrigen Abstraktionsebene. Das Ergebnis ist ein roher Binär-String, der z. B. an MongoDB\BSON\toPHP() übergeben werden kann, um daraus ein PHP-Objekt oder Array zu erzeugen.
Die Funktion versteht sowohl normales JSON als auch das MongoDB Extended JSON-Format (v1 und v2), das typspezifische Wrapper-Objekte wie {"$oid": "..."} oder {"$date": {...}} definiert.
Wird ein ungültiger JSON-String übergeben, wirft die Funktion eine MongoDB\Driver\Exception\UnexpectedValueException.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $json Pflicht | string | Ein gültiger JSON- oder MongoDB-Extended-JSON-String, der in BSON umgewandelt werden soll. Ungültiger JSON führt zu einer MongoDB\Driver\Exception\UnexpectedValueException. |
Rückgabewert
MongoDB\BSON\toPHP() weiterverarbeitet werden.Beispiele
Einfaches JSON in BSON und zurück nach PHP konvertieren
<?php
// Einfaches JSON-Objekt nach BSON konvertieren
$json = '{"name": "Alice", "age": 30}';
$bson = MongoDB\BSON\fromJSON($json);
// BSON zurück in ein PHP-Array umwandeln
$phpValue = MongoDB\BSON\toPHP($bson, ['root' => 'array', 'document' => 'array']);
var_dump($phpValue);
Extended JSON mit MongoDB-spezifischen Typen
<?php
// Extended JSON mit ObjectId und Date
$extJson = '{"_id": {"$oid": "507f1f77bcf86cd799439011"}, "createdAt": {"$date": {"$numberLong": "1360013296394"}}}';
$bson = MongoDB\BSON\fromJSON($extJson);
// BSON zu PHP-Objekt konvertieren
$doc = MongoDB\BSON\toPHP($bson);
var_dump($doc->_id instanceof MongoDB\BSON\ObjectId); // true
var_dump($doc->createdAt instanceof MongoDB\BSON\UTCDateTime); // true
Fehlerbehandlung bei ungültigem JSON
<?php
try {
$bson = MongoDB\BSON\fromJSON('{ungültiges json}');
} catch (MongoDB\Driver\Exception\UnexpectedValueException $e) {
echo 'Fehler: ' . $e->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
Sicherheitshinweis: Verarbeite niemals unkontrolliert externe JSON-Eingaben ohne vorherige Validierung. Obwohl fromJSON selbst keinen Schadcode ausführt, können manipulierte Extended-JSON-Dokumente zu unerwarteten BSON-Typen führen, die beim späteren Einfügen in MongoDB unerwünschte Effekte erzeugen.
Namespace-Hinweis: Die Funktion ist Teil des MongoDB\BSON-Namespaces der MongoDB PHP-Erweiterung (ext-mongodb). Sie ist nicht Teil des höherstufigen mongodb/mongodb-Composer-Pakets und wird bei direkter Verwendung des Composer-Pakets selten benötigt.
Der Rückgabewert ist ein Binär-String und kein lesbares Format – er sollte nicht direkt ausgegeben werden.