Savoir encoder et décoder les JSON en PHP, on vous explique comment faire

08/10/2026

Écrit par Johanny

PHP

ncode_level

3 vues

Développeuse codant sur ordinateur portable un script PHP pour encoder et décoder des données au format JSON.
Sommaire

Le format JSON (JavaScript Object Notation) est devenu le standard absolu pour échanger des données sur le web. Que vous communiquiez avec une application mobile, un frontend en JavaScript (comme React ou Vue), ou un service externe, vous devrez inévitablement manipuler du JSON.

Heureusement, la gestion du JSON en PHP est extrêmement simple grâce à des fonctions natives puissantes. Dans ce tutoriel, vous allez apprendre à transformer vos données PHP en JSON, à lire du JSON pour l’utiliser dans votre code, et à éviter les pièges les plus courants lors de la création d’une API ou de la lecture de fichiers.

Encoder des données : de PHP vers JSON

L’encodage consiste à prendre des données structurées en PHP (généralement un tableau associatif ou un objet) et à les transformer en une chaîne de caractères au format JSON. C’est l’étape indispensable avant d’envoyer des données à un navigateur ou de les sauvegarder.

Pour cela, PHP met à notre disposition la fonction json_encode().

Comment encoder un tableau PHP en JSON

Imaginons que vous possédez des informations sur un utilisateur stockées dans un tableau associatif. Voici comment les préparer pour un envoi :

<?php
// Notre tableau associatif PHP 

$utilisateur = [ "id" => 42, "nom" => "Dupont", "prenom" => "Jean", "actif" => true, "roles" => ["editeur", "abonne"] ]; // Encodage en JSON $json = json_encode($utilisateur); echo $json; ?>

Le résultat affiché sera une chaîne de caractères parfaitement formatée, prête à être transmise :

{"id":42,"nom":"Dupont","prenom":"Jean","actif":true,"roles":["editeur","abonne"]}

Rendre le JSON plus lisible

Si vous générez un fichier ou affichez ces données pour un humain (lors du débogage par exemple), vous pouvez utiliser l’option JSON_PRETTY_PRINT pour formater le résultat avec des sauts de ligne et des indentations.

$json_lisible = json_encode($utilisateur, JSON_PRETTY_PRINT);

Décoder des données : de JSON vers PHP

Le processus inverse, le décodage, est tout aussi courant. Lorsque vous recevez des données d’une API ou lisez un fichier de configuration, elles arrivent sous forme de texte. Vous devez les transformer en variables utilisables dans votre code avec json_decode().

Comment obtenir un objet ou un tableau ?

C’est l’une des subtilités les plus importantes pour les débutants. Par défaut, json_decode() transforme les objets JSON en objets PHP (de la classe standard stdClass).

<?php
$json_recu = '{"nom": "Dupont", "age": 30}';

// Décodage par défaut (retourne un objet)
$donnees_objet = json_decode($json_recu);
echo $donnees_objet->nom; // Affiche "Dupont"
?>

Cependant, en PHP, il est souvent plus pratique de travailler avec des tableaux associatifs, surtout si vous prévoyez de boucler dessus. Pour forcer ce comportement, il suffit d’ajouter true en deuxième paramètre :

<?php
// Décodage en tableau associatif grâce au paramètre true
$donnees_tableau = json_decode($json_recu, true);
echo $donnees_tableau['nom']; // Affiche "Dupont"
?>

Gérer les erreurs de manipulation JSON

Il arrive fréquemment qu’une chaîne JSON entrante soit mal formatée (une virgule en trop, des guillemets manquants, un encodage incorrect). Dans ce cas, json_decode() échoue silencieusement et retourne null.

Pour comprendre ce qui s’est mal passé lors de votre manipulation JSON, vous pouvez utiliser la fonction json_last_error_msg() :

<?php
$json_invalide = '{"nom": "Dupont",}'; // La virgule à la fin est une erreur en JSON

$resultat = json_decode($json_invalide, true);

if ($resultat === null) {
    echo "Erreur de décodage : " . json_last_error_msg();
    // Affichera : Erreur de décodage : Syntax error
}
?>

Cas pratique : JSON et API REST PHP

Le duo composé de JSON et de PHP prend tout son sens lors de la création de services web. Voici un exemple minimaliste montrant comment recevoir du JSON, le traiter, et renvoyer une réponse propre pour une API REST PHP.

1. Recevoir et lire du JSON

Dans une API REST, les données envoyées en méthode POST au format JSON ne se trouvent pas dans la variable classique $_POST. Il faut lire le corps de la requête brute via le flux d’entrée :

<?php
// Lecture du corps brut de la requête HTTP
$flux_entrant = file_get_contents('php://input');

// Décodage en tableau associatif
$donnees = json_decode($flux_entrant, true);

if ($donnees) {
    $nom_recu = $donnees['nom'] ?? 'Inconnu';
    // Traitement des données (ex: sauvegarde en base de données)
}
?>

2. Renvoyer une réponse JSON

Pour que le client (le navigateur, Postman, ou une application mobile) comprenne qu’il reçoit du JSON et non du HTML, il est indispensable de modifier les en-têtes HTTP (headers) avant d’afficher le résultat :

<?php
// Préparation de la réponse structurée
$reponse = [
    "statut" => "succès",
    "message" => "Données traitées correctement"
];

// Indiquer au client que le contenu est du JSON
header('Content-Type: application/json; charset=utf-8');

// Envoi de la réponse encodée
echo json_encode($reponse);
?>

En résumé

La gestion du JSON en PHP est robuste et directe. Elle repose principalement sur deux fonctions essentielles : json_encode() pour exporter vos données vers l’extérieur et json_decode() pour importer des chaînes de caractères dans vos scripts. Gardez toujours à l’esprit l’importance du paramètre true lors du décodage si vous préférez manipuler des tableaux, et pensez à vérifier les erreurs de syntaxe lorsque vous traitez des données provenant de sources externes.

Cet article t'a plu ?

Ajoute le premier commentaire
0 Commentaires
Le plus récent
Le plus ancien Le plus populaire

Resultats de la recherche