Start · Sprachen · PHP · Referenz · MongoDB\BSON\fromJSON

MongoDB\BSON\fromJSON

Funktion

Konvertiert einen JSON-String in seine BSON-Binärdarstellung und gibt diese als rohen Binär-String zurück.

seit PHP 1.0.0 Kategorie: db

Signatur

MongoDB\BSON\fromJSON(string $json): string

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

Typ
string
Beschreibung
Gibt einen rohen Binär-String zurück, der die BSON-Repräsentation des übergebenen JSON-Werts enthält. Dieser String kann z. B. mit 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);
array(2) { ["name"]=> string(5) "Alice" ["age"]=> int(30) }

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
bool(true) bool(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;
}
Fehler: Failed to parse JSON: ...

// 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.