Heim Schlagzeilen Werfen Sie einen Blick auf die JSON-Fehlerbehandlung in der neuen Version von PHP 7.3

Werfen Sie einen Blick auf die JSON-Fehlerbehandlung in der neuen Version von PHP 7.3

Jul 12, 2018 am 11:39 AM

Hintergrund

Wenn Sie im aktuell stabilen PHP V7.2 feststellen möchten, dass der JSON ungültig ist, müssen Sie die Funktionsüberprüfung json_last_error() verwenden:

>>> json_decode("{");
=> null
>>> json_last_error();
=> 4
>>> json_last_error() === JSON_ERROR_NONE
=> false
>>> json_last_error_msg()
=> "Syntax error"
Nach dem Login kopieren

Hier ist zum Beispiel eine Prüfung in Larave, um sicherzustellen, dass der Aufruf der JSON-Kodierung nicht zu einem Fehler führt:

// Once we get the encrypted value we'll go ahead and base64_encode the input
// vector and create the MAC for the encrypted value so we can then verify
// its authenticity. Then, we'll JSON the data into the "payload" array.
$json = json_encode(compact('iv', 'value', 'mac'));
if (json_last_error() !== JSON_ERROR_NONE) {
    throw new EncryptException('Could not encrypt the data.');
}
return base64_encode($json);
Nach dem Login kopieren

Wir können zumindest feststellen, ob ein Fehler in der JSON-Kodierung vorliegt /decoding, aber das ist im Vergleich zum Auslösen etwas umständlich. Eine Ausnahme gibt einen Fehlercode und eine Fehlermeldung aus.

Während Sie bereits Optionen zum Erfassen und Verarbeiten von JSON haben, wollen wir sehen, was die neue Version auf nette Weise leisten kann!

Auslösen von Fehlerflags in PHP 7.3

Mit dem neuen Optionsflag JSON_THROW_ON_ERROR ist es möglich, diesen Codeblock umzuschreiben, um Try/Catch zu verwenden.

Vielleicht so etwas:

use JsonException;
try {
    $json = json_encode(compact('iv', 'value', 'mac'), JSON_THROW_ON_ERROR);
    return base64_encode($json);
} catch (JsonException $e) {
    throw new EncryptException('Could not encrypt the data.', 0, $e);
}
Nach dem Login kopieren

Ich denke, dieser neue Stil ist besonders nützlich für Benutzercode, wenn Sie JSON-Daten erhalten, anstatt nach json_last_error() zu suchen und Optionen für die JSON-Kodierung und -Dekodierung abzugleichen kann Fehlerhandler nutzen.

Diese json_decode()-Funktion benötigt ein paar Parameter und sieht aus wie PHP 7.3 und niedriger. Wenn Sie die Fehlerbehandlung nutzen möchten:

use JsonException;
try {
    return json_decode($jsonString, $assoc = true, $depth = 512, JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
    // Handle the JSON Exception
}
// Or even just let it bubble up...
/** 
 * Decode a JSON string into an array
 *
 * @return array
 * @throws JsonException
 */
function decode($jsonString) {
    return json_decode($jsonString, $assoc = true, $depth = 512, JSON_THROW_ON_ERROR);
}
Nach dem Login kopieren

Erhalten Sie den Fehlercode und den Fehler Nachricht

Zuvor haben Sie den JSON-Fehlercode und die JSON-Fehlermeldung mit der folgenden Funktion erhalten:

// Error code
json_last_error();
// Human-friendly message
json_last_error_msg();
Nach dem Login kopieren

Wenn Sie das neue JSON_THROW_ON_ERROR verwenden, erfahren Sie hier, wie Sie das verwenden Geben Sie den Code ein und erhalten Sie die Meldung:

try {
    return json_decode($jsonString, $assoc = true, $depth = 512, JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
    $e->getMessage(); // like json_last_error_msg()
    $e->getCode(); // like json_last_error()
}
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)