English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans ce tutoriel, vous apprendrez à encoder et décoder des données JSON en PHP.
JSON représente JavaScript Object Notation. JSON est un format d'échange de données léger et standard, qui peut être analysé et généré rapidement et facilement.
JSON et XML sont tous deux des formats basés sur du texte, faciles à écrire et à comprendre pour les humains et les ordinateurs, mais contrairement à XML, la structure des données JSON utilise moins de bande passante que la version XML. JSON est basé sur deux structures de base :
objet :cette définition est appelée/Un ensemble de paires de valeurs (c'est-à-dire key:value). Chaque objet commence par une accolade ouvrante { et se termine par une accolade fermante }. Plusieurs clés/Les paires de valeurs sont séparées par des virgules,.
Tableau :définies comme une liste ordonnée de valeurs. Un tableau commence par une accolade ouvrante et se termine par une accolade fermante [ ]. Les valeurs sont séparées par des virgules,.
Dans JSON, les clés sont toujours des chaînes de caractères, et les valeurs peuvent êtrestring,number,trueoufalse,nullou mêmeobjectouarrayLes chaînes de caractères doivent être encadrées par des guillemets doubles (" ") et peuvent contenir des caractères d'échappement, tels que \n, \t et \. Un objet JSON peut être comme suit :
{ "book": { "name": "Harry Potter and the Goblet of Fire", "author": "J. K. Rowling", "year": 2000, "genre": "Fantasy Fiction", "bestseller": true } }
Voici un exemple d'array JSON :
{ "fruits": [ "Apple", "Banana", "Strawberry", "Mango" ] }
Avis :Le format d'échange de données est un format texte utilisé pour échanger ou échanger des données entre différentes plates-formes et systèmes d'exploitation. JSON est le format d'échange de données le plus populaire et le plus léger utilisé dans les applications Web.
La structure des données JSON est très similaire aux tableaux PHP. PHP dispose de fonctions intégrées pour encoder et décodé les données JSON. Ces fonctions sont respectivement json_encode() et json_decode(). Ces deux fonctions ne s'appliquent qu'aux UTF-8chaînes de données encodées.
Dans PHP, la fonction json_encode() est utilisée pour encoder des valeurs au format JSON. Les valeurs encodées peuvent être tout, sauf des ressources.Types de données PHPpar exemple, une base de données ou un gestionnaire de fichier. L'exemple suivant montre commentTableau associatif PHPCodé en objet JSON :
<?php //Tableau associatif $marks = array("Peter"=>65, "Harry"=>80, "John"=>78, "Clark"=>90); echo json_encode($marks); ?>测试看看‹/›
La sortie de l'exemple précédent sera comme suit :
{"Peter":65,"Harry":80,"John":78,"Clark":90}
De même, vous pouvezTableau indexé PHPCodé en tableau JSON, comme suit :
<?php //Tableau indexé $colors = array("Red", "Green", "Blue", "Orange", "Jaune"); echo json_encode($colors); ?>测试看看‹/›
La sortie de l'exemple précédent sera comme suit :
["Red","Green","Blue","Orange","Jaune"]
Vous pouvez également forcer json_encode() à renvoyer un objet JSON PHP en utilisant l'option JSON_FORCE_OBJECT, comme dans l'exemple suivant :
<?php //Tableau indexé $colors = array("Red", "Green", "Blue", "Orange", "Yellow"); echo json_encode($colors, JSON_FORCE_OBJECT); ?>测试看看‹/›
La sortie de l'exemple précédent sera comme suit :
{"0":"Red","1":"Vert","2":"Bleu","3":"Orange"}
Comme vous pouvez le voir dans l'exemple ci-dessus, les tableaux non associatifs peuvent être codés en tableau ou en objet. Cependant, les tableaux associatifs sont toujours codés en objet.
Le décodage JSON des données est aussi simple que leur codage. Vous pouvez utiliser la fonction PHP json_decode() pour convertir une chaîne codée en JSON en un type de données PHP approprié. L'exemple suivant montre comment décodé ou convertir unePHP objet。
<?php //Stocker les données JSON dans une variable PHP $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; var_dump(json_decode($json)); ?>测试看看‹/›
La sortie de l'exemple précédent est la suivante :
object(stdClass)#1 (4) { ["Peter"]=> int(65) ["Harry"]=> int(8) ["John"]=> int(78) ["Clark"]=> int(90) }
Par défaut, la fonction json_decode() renvoie un objet. Mais vous pouvez choisir de spécifier le deuxième paramètre $assoc, qui accepte une valeur booléenne. Lorsqu'il est mis à true, l'objet JSON est décodé en tableau associatif. Par défaut, il est false. Voici un exemple :}}
<?php //Stocker les données JSON dans une variable PHP $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; var_dump(json_decode($json, true)); ?>测试看看‹/›
La sortie de l'exemple précédent est la suivante :
array(4) { ["Peter"]=> int(65) ["Harry"]=> int(8) ["John"]=> int(78) ["Clark"]=> int(90) }
Maintenant, regardons un exemple qui vous montrera comment décodé des données JSON et accéder aux éléments de l'objet ou tableau JSON dans PHP.
<?php //将JSON编码的字符串分配给PHP变量 $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; //Décodé les données JSON en tableau associatif PHP $arr = json_decode($json, true); //Accéder aux valeurs depuis le tableau associatif echo $arr["Peter"]; //Sortie : 65 echo $arr["Harry"]; //Sortie : 80 echo $arr["John"]; //Sortie : 78 echo $arr["Clark"]; //Sortie : 90 //Décodé les données JSON en objet PHP $obj = json_decode($json); //Accéder aux valeurs depuis l'objet renvoyé echo $obj;->Peter; //Sortie : 65 echo $obj;->Harry; //Sortie : 80 echo $obj;->John; //Sortie : 78 echo $obj;->Clark; //Sortie : 90 ?>测试看看‹/›
Vous pouvez également utiliserforeach()Parcourir les données décodées en boucle, comme suit :
<?php //将JSON编码的字符串分配给PHP变量 $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; //Décodé les données JSON en tableau associatif PHP $arr = json_decode($json, true); //Parcourir un tableau associatif foreach($arr as $key=>$value){ echo $key . "=>" . $value . "<br>"; } echo "<hr>"; //Décodé les données JSON en objet PHP $obj = json_decode($json); //Parcourir l'objet foreach($obj as $key => $value){ echo $key . "=>" . $value . "<br>"; } ?>测试看看‹/›
Les objets JSON et les tableaux peuvent également être imbriqués. Les objets JSON peuvent contenir n'importe quel autre objet JSON, tableau, tableau imbriqué, tableau d'objets JSON, etc. Le suivant exemple vous montrera comment décodé des objets JSON imbriqués et imprimer toutes les valeurs dans PHP.
<?php //Définir une fonction récursive pour extraire les valeurs imbriquées function printValues($arr) { global $count; global $values; //Vérifier si l'entrée est un tableau if(!is_array($arr)){ die("Erreur : l'entrée n'est pas un tableau"); } /* Parcourir le tableau, si value est lui-même un tableau, appeler récursivement 函数将找到的值添加到输出项目数组中, 并为找到的每个值将计数器加1 */ foreach($arr as $key=>$value){ if(is_array($value)){ printValues($value); } else{ $values[] = $value; $count++; } } // 返回在数组中找到的总计数和值 return array('total' => $count, 'values' => $values); } //将JSON编码的字符串分配给PHP变量 $json = '{ "book": { "name": "Harry Potter and the Goblet of Fire", "author": "J. K. Rowling", "year": 2000, "characters": ["Harry Potter", "Hermione Granger", "Ron Weasley"], "genre": "Fantasy Fiction", "price": { "paperback": "$10.40", "hardcover": "$20.32", "kindle": "4.11" } } }'; //将JSON数据解码为PHP关联数组格式 $arr = json_decode($json, true); //调用该函数并打印所有值 $result = printValues($arr); echo "<h3>" . $result["total"] . " value(s) found: </h3>"; echo implode("<br>", $result["values"]); echo "<hr>"; //打印一个值 echo $arr["book"]["author"] . "<br>"; //输出: J. K. Rowling echo $arr["book"]["characters"][0] . "<br>"; //输出: Harry Potter echo $arr["book"]["price"]["hardcover"]; //输出: $20.32 ?>测试看看‹/›