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
Libérer: 2024-11-18 18:59:02
original
829 Les gens l'ont consulté

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);
Copier après la connexion

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";
}
Copier après la connexion

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!";
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal