Dans le développement Web, la technologie JSON est devenue un élément indispensable et est largement utilisée dans la transmission et le stockage de données front-end et back-end. En langage PHP, nous avons souvent besoin de convertir les données JSON en tableaux pour le fonctionnement et le traitement. Cet article vous expliquera comment convertir JSON en tableau.
1. Utilisez la fonction json_decode()
En PHP, nous pouvons utiliser la fonction intégrée json_decode() pour analyser une chaîne JSON dans un tableau PHP. L'utilisation de base de cette fonction est la suivante :
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
Parmi eux, le paramètre $json représente la chaîne JSON à analyser, $assoc représente s'il faut convertir l'objet analysé en un tableau avec des noms de clés, la valeur par défaut est false et $profondeur représente la profondeur de l'analyse, la valeur par défaut est 512, $options représente les options d'analyse, la valeur par défaut est 0.
Par exemple, nous avons la chaîne JSON suivante :
{"name": "Tom", "age": 18, "hobbies": ["music", "movies"]}
Nous pouvons la convertir en tableau via le code PHP suivant :
$json = '{"name": "Tom", "age": 18, "hobbies": ["music", "movies"]}'; $arr = json_decode($json, true); print_r($arr);
Le résultat de sortie est le suivant :
Array ( [name] => Tom [age] => 18 [hobbies] => Array ( [0] => music [1] => movies ) )
2. Gérer les problèmes courants de conversion
En pratique Dans l'application, nous pouvons rencontrer le problème que certaines chaînes JSON ne peuvent pas être correctement converties en tableaux. Ensuite, nous présenterons quelques problèmes courants et leurs solutions.
Par exemple, lorsque la chaîne JSON contient des caractères spéciaux tels que des guillemets simples ou des guillemets doubles, le programme signalera une erreur ou ne parviendra pas à convertir. Pour le moment, nous pouvons éviter cette situation en échappant à la chaîne. PHP fournit une fonction intégrée addlashes() pour s'échapper.
Par exemple :
$json = '{"name": "Tom\'s book", "page": "100\""}'; $json = addslashes($json); $arr = json_decode($json, true); print_r($arr);
Le résultat de sortie est le suivant :
Array ( [name] => Tom's book [page] => 100" )
Lorsque la chaîne JSON contient du chinois, si elle n'est pas traitée, la conversion échouera ou sera tronquée . PHP fournit une fonction intégrée json_encode() pour convertir un tableau en chaîne JSON, et des paramètres peuvent être définis pour éviter les caractères chinois tronqués.
Par exemple :
$arr = array('name' => '张三', 'age' => 19); $json = json_encode($arr, JSON_UNESCAPED_UNICODE); echo $json;
Le programme affichera les résultats suivants :
{"name":"张三","age":19}
Lors de l'exécution d'un traitement inverse, vous devez utiliser une chaîne JSON au format d'encodage UTF-8, sinon des caractères tronqués apparaîtront également.
Lorsqu'un format de chaîne JSON est incorrect, la fonction json_decode() ne pourra pas analyser la chaîne correctement. À ce stade, nous devons d'abord effectuer une vérification du format sur la chaîne JSON, puis la corriger en fonction des différents types d'erreurs.
Par exemple :
$json = '[{"name": "Tom", "age": 18}, {"name": "Bob", "age":19}'; $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_UTF8: echo 'JSON字符串包含非UTF-8字符'; break; default: echo 'JSON字符串解析失败'; break; } } else { print_r($arr); }
Le résultat de sortie est le suivant :
JSON字符串格式错误
Ce qui précède est la méthode pour convertir JSON en tableau et les solutions à divers problèmes. J'espère que cet article pourra être utile aux développeurs PHP.
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!