English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel PHP de base

Tutoriel PHP avancé

PHP & MySQL

Manuel de référence PHP

Analyse JSON PHP

Dans ce tutoriel, vous apprendrez à encoder et décoder des données JSON en PHP.

Qu'est-ce que JSON

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 êtrestringnumbertrueoufalsenullou 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.

PHP analyse JSON

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.

PHP encode JSON

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.

Décodage JSON avec PHP

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>";
}
?>
测试看看‹/›

Extraire des valeurs des données JSON imbriquées en PHP

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
?>
测试看看‹/›