Maison >développement back-end >tutoriel php >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 ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-18 18:59:02838parcourir

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 un JSON incorrect pour des chaînes telles que { bar: "baz" }, il ne parvient pas à gérer les données autres que des chaînes telles que "données invalides".

Comprendre json_decode()

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

  • Il renvoie le données décodées ou null en cas d'erreur.
  • Il peut également renvoyer null lorsque la chaîne JSON contient null.
  • Il déclenche des avertissements en cas d'erreurs.

Suppression des avertissements avec l'opérateur @

Pour supprimer les avertissements, une option consiste à utiliser l'opérateur @ 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 divers JSON. erreurs d'analyse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn