"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je gérer efficacement les mauvaises données JSON avec `json_decode()` de PHP ?

Comment puis-je gérer efficacement les mauvaises données JSON avec `json_decode()` de PHP ?

Publié le 2024-11-25
Parcourir:816

How Can I Effectively Handle Bad JSON Data with PHP\'s `json_decode()`?

Gestion des données JSON incorrectes avec json_decode() en PHP

Lorsque vous traitez des données JSON à l'aide de json_decode(), il est crucial de gérer les données non valides efficacement. Bien que le script fourni puisse détecter les mauvais JSON pour des chaînes telles que { bar: "baz" }, il ne parvient pas à gérer les données autres que des chaînes telles que les "données invalides".

Comprendre json_decode()

Pour résoudre ce problème, il est essentiel de comprendre json_decode() :

  • Il renvoie les données décodées ou null en cas de problème. erreur.
  • Il peut également renvoyer null lorsque la chaîne JSON contient null.
  • Il génère des avertissements en cas d'erreurs.

Suppression des avertissements avec l'opérateur @

Pour supprimer les avertissements, une option consiste à utiliser l'opérateur @ :

$data = @json_decode($_POST);

Cette approche fait taire l'avertissement, mais nécessite des vérifications supplémentaires pour gérer les erreurs et les valeurs nulles :

if ($data === null && json_last_error() !== JSON_ERROR_NONE) {
    echo "Incorrect data";
}

Gestion personnalisée des erreurs

Une autre option consiste à créer un script de gestion des erreurs personnalisé :

function handle_json_error() {
    $error = json_last_error();
    switch ($error) {
        case JSON_ERROR_NONE:
            return true;
        case JSON_ERROR_DEPTH:
            echo "Maximum depth exceeded";
            break;
        case JSON_ERROR_STATE_MISMATCH:
            echo "Invalid or malformed JSON";
            break;
        case JSON_ERROR_CTRL_CHAR:
            echo "Control character error";
            break;
        case JSON_ERROR_SYNTAX:
            echo "Syntax error";
            break;
        case JSON_ERROR_UTF8:
            echo "Malformed UTF-8 characters";
            break;
        default:
            echo "Unknown error";
    }
    return false;
}

if (!handle_json_error()) {
    echo "Bad JSON data!";
}

Ce script fournit des messages d'erreur détaillés et gère diverses erreurs d'analyse JSON.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3