Maison  >  Article  >  développement back-end  >  Convertir les données php json en tableau

Convertir les données php json en tableau

王林
王林original
2023-05-23 11:14:36365parcourir

En PHP, nous devons parfois convertir les données JSON au format tableau pour le traitement. À l’heure actuelle, nous pouvons utiliser la fonction json_decode() pour convertir les données JSON en un tableau PHP. Cet article explique comment utiliser la fonction json_decode() pour convertir des données JSON en tableau et répond à quelques questions courantes.

JSON est un format d'échange de données léger qui est largement utilisé pour transmettre des données en raison de ses avantages d'être simple à comprendre, facile à utiliser et facile à étendre. PHP est un langage de programmation faiblement typé, efficace, rapide, facile à apprendre et à utiliser. Le format JSON étant supporté nativement par PHP, il est très pratique d'utiliser PHP pour traiter les données JSON pendant le développement.

Utilisez la fonction json_decode() pour convertir des données JSON en tableau

Ce qui suit est un exemple de code pour convertir des données JSON en tableau :

$json = '{"name":"Tom","age":"20","sex":"male"}';

$arr = json_decode($json, true);

var_dump($arr);

Résultat de sortie :

array(3) {
  ["name"]=>
  string(3) "Tom"
  ["age"]=>
  string(2) "20"
  ["sex"]=>
  string(4) "male"
}

Comme vous pouvez le voir, la fonction json_decode() convertit les données JSON en un tableau PHP. Le deuxième paramètre de cette fonction peut être défini sur true ou false, qui renvoie un tableau associatif lorsqu'il est défini sur true, ou un objet lorsqu'il est défini sur false ou non défini.

Ce qui suit est un exemple de code pour renvoyer un objet :

$json = '{"name":"Tom","age":"20","sex":"male"}';

$obj = json_decode($json);

var_dump($obj);

Résultat de sortie :

object(stdClass)#1 (3) {
  ["name"]=>
  string(3) "Tom"
  ["age"]=>
  string(2) "20"
  ["sex"]=>
  string(4) "male"
}

Lors de l'analyse d'une chaîne JSON, si vous constatez que l'encodage des caractères n'est pas UTF-8, vous devez le convertir en UTF-8 encodage :

$json = '{"name":"Tom","age":"20","sex":"male"}';

$json = mb_convert_encoding($json, 'UTF-8', 'auto'); // 将编码转换为 UTF-8

$arr = json_decode($json, true);

var_dump($arr);

FAQ

1. Comment gérer les erreurs d'analyse JSON ?

Pendant le processus de traitement des données JSON, des erreurs d'analyse peuvent survenir en raison de problèmes de format de données JSON ou de problèmes de format d'encodage. À ce stade, vous pouvez utiliser la fonction json_last_error() pour obtenir la cause de l'erreur d'analyse. Cette fonction renvoie un nombre représentant le type d'erreur d'analyse JSON. Voici la définition du type d'erreur :

  • JSON_ERROR_NONE : Aucune erreur, analyse réussie.
  • JSON_ERROR_DEPTH : Les données JSON sont trop complexes et dépassent la profondeur maximale définie.
  • JSON_ERROR_STATE_MISMATCH : Le format des données JSON est incorrect.
  • JSON_ERROR_CTRL_CHAR : Il y a un caractère de contrôle incorrect.
  • JSON_ERROR_SYNTAX : Il y a une erreur de syntaxe dans les données JSON.
  • JSON_ERROR_UTF8 : les données JSON ne sont pas codées en UTF-8.

Utilisez le code suivant pour obtenir la cause de l'erreur d'analyse :

$json = '{"name": "Tom""age": "20"}'; // 注意,这里有错误

$arr = json_decode($json, true);

if (json_last_error() !== JSON_ERROR_NONE) {
    switch (json_last_error()) {
        case JSON_ERROR_DEPTH:
            echo 'JSON 数据过于复杂,超出了设置的最大深度';
            break;
        case JSON_ERROR_STATE_MISMATCH:
            echo 'JSON 数据格式不正确';
            break;
        case JSON_ERROR_CTRL_CHAR:
            echo 'JSON 数据中有不正确的控制字符';
            break;
        case JSON_ERROR_SYNTAX:
            echo 'JSON 数据存在语法错误';
            break;
        case JSON_ERROR_UTF8:
            echo 'JSON 数据不是 UTF-8 编码';
            break;
        default:
            echo '未知的 JSON 解析错误';
            break;
    }
}

var_dump($arr);

Résultat de sortie :

JSON 数据存在语法错误
NULL

Comme indiqué ci-dessus, la fonction json_last_error() peut facilement obtenir la cause de l'erreur d'analyse, afin de trouver rapidement la problème.

2. Comment gérer le problème du format JSON non standard ?

En utilisation réelle, certaines données JSON peuvent ne pas être dans le format le plus standardisé, comme l'utilisation d'une virgule après la dernière valeur d'attribut. Si vous utilisez la fonction json_decode() pour analyser ces données JSON, NULL sera renvoyé. À ce stade, nous pouvons utiliser une bibliothèque tierce pour le traitement.

Ce qui suit est un exemple de code qui utilise la bibliothèque json5 pour gérer le format non canonique JSON :

// 首先,安装 json5 库
// composer require symfony/polyfill-mbstring
// composer require webonyx/json5

$json = '{"name": "Tom", "age": 20, }'; // 注意,这里有错误

use Json5Parser;

$parser = new Parser();
$arr = $parser->decode($json);

var_dump($arr);

Résultat de sortie :

array(2) {
  ["name"]=>
  string(3) "Tom"
  ["age"]=>
  int(20)
}

Comme indiqué ci-dessus, l'utilisation de la bibliothèque json5 peut facilement gérer le problème du format non canonique JSON.

3. Comment gérer le problème de l'accès inter-domaines aux données JSON ?

Le problème de l'accès inter-domaines aux données JSON signifie que pour des raisons de sécurité, le navigateur interdit au front-end d'accéder aux ressources d'autres domaines via des requêtes ajax dans une requête ajax. À ce stade, nous devons effectuer quelques réglages.

Ce qui suit est un exemple de code permettant d'utiliser PHP pour obtenir un accès inter-domaines :

header('Access-Control-Allow-Origin: *'); // 允许所有域名访问
header('Content-Type: application/json');

$json = '{"name": "Tom", "age": 20, "sex": "male"}';

echo $json;

Comme indiqué ci-dessus, la définition de l'en-tête Access-Control-Allow-Origin en PHP permet un accès inter-domaines à partir d'autres noms de domaine.

Conclusion

Jusqu'à présent, nous avons présenté comment utiliser la fonction json_decode() pour convertir les données JSON en un tableau et comment résoudre certains problèmes courants rencontrés lors du traitement des données JSON. J'espère que cet article pourra être utile à tout le monde.

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