Décoder du JSON en tables
Analysez des chaînes JSON.
Décoder du JSON en tables est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.
Bases du décodage
Le décodage transforme une chaîne JSON en valeur Lua que vous pouvez manipuler. Le point d’entrée est json.decode(text).
Si le JSON racine est un objet, vous obtenez une table Lua avec des clés chaînes ; s’il s’agit d’un tableau, vous obtenez une table avec des indices numériques.
local json = require("dkjson")
local data = json.decode('{"id": 7}')
print(data.id)Lire les champs d’un objet
Un objet JSON décodé se comporte comme n’importe quelle table Lua. Accédez aux valeurs avec la notation par points ou entre crochets.
Les clés qui ne sont pas des identifiants Lua valides, comme celles qui contiennent des espaces, nécessitent la syntaxe entre crochets.
local json = require("dkjson")
local u = json.decode('{"name": "Mia", "full name": "Mia Lee"}')
print(u.name)
print(u["full name"])Décoder des tableaux
Un tableau JSON est décodé en table de séquence Lua indexée à partir de 1. Parcourez-la avec ipairs ou une boucle numérique.
Souvenez-vous-en : les tableaux Lua commencent à l’indice 1, et non à 0.
local json = require("dkjson")
local nums = json.decode('[10, 20, 30]')
for i, v in ipairs(nums) do
print(i, v)
endNombres et booléens
Les nombres JSON sont décodés en nombres Lua, et les valeurs JSON true/false en booléens Lua.
Après le décodage, vous pouvez les utiliser directement dans des opérations arithmétiques ou des conditions.
local json = require("dkjson")
local d = json.decode('{"qty": 3, "paid": false}')
if not d.paid then
print("unpaid, qty =", d.qty)
endGérer la valeur nulle
La valeur JSON null est délicate, car nil en Lua supprime une clé d’une table. Les bibliothèques la traitent différemment.
dkjson décode null en une valeur sentinelle json.null, afin que la clé existe toujours. Comparez la valeur à cette sentinelle pour détecter les valeurs nulles.
local json = require("dkjson")
local d = json.decode('{"mid": null}')
if d.mid == json.null then
print("mid is null")
endDécoder depuis un fichier
Souvent, le JSON se trouve dans un fichier. Lisez le fichier entier dans une chaîne, puis décodez-la.
Ce schéma est courant pour charger une configuration ou l’état sauvegardé d’une partie.
local json = require("dkjson")
local f = io.open("config.json", "r")
local text = f:read("*a")
f:close()
local cfg = json.decode(text)
print(cfg.theme)Les trois valeurs renvoyées
La fonction decode de dkjson renvoie jusqu’à trois valeurs : le résultat décodé, la position à laquelle l’analyse s’est arrêtée et un message d’erreur.
En cas de réussite, le résultat n’est pas nul ; en cas d’échec, il vaut nil et la troisième valeur explique pourquoi.
local json = require("dkjson")
local obj, pos, err = json.decode('{"a":1}')
print(obj.a, pos, err)Valider l’entrée
Ne faites jamais confiance à un JSON externe. Vérifiez toujours le résultat avant de l’utiliser afin qu’une charge utile malformée ne fasse pas planter votre programme.
local json = require("dkjson")
local function safeDecode(s)
local v, _, err = json.decode(s)
if not v then return nil, err end
return v
endDifférences de cjson
lua-cjson fonctionne de manière similaire, mais déclenche une erreur en cas d’entrée invalide au lieu de la renvoyer. Encapsulez-le dans pcall pour plus de sécurité.
cjson est plus rapide, ce qui compte pour l’analyse de gros volumes.
local cjson = require("cjson")
local ok, data = pcall(cjson.decode, '{"x":1}')
if ok then print(data.x) else print("error") endLes clés absentes valent nil
Si vous lisez une clé absente du JSON, Lua renvoie simplement nil. C’est normal et cela ne déclenche pas d’erreur.
Utilisez une valeur de repli avec or pour fournir des valeurs par défaut aux champs facultatifs.
local json = require("dkjson")
local d = json.decode('{"name": "Sam"}')
local age = d.age or 0
print(d.name, age)Les tables vides sont ambiguës
Un objet JSON vide {} et un tableau JSON vide [] sont tous deux décodés en table Lua vide. Après le décodage, vous ne pouvez pas savoir lequel des deux se trouvait dans le JSON.
Cela compte surtout lors du réencodage ; gardez cette ambiguïté à l’esprit pour les cycles aller-retour.
Vérification rapide
Vérifiez ce que vous avez appris sur le décodage de JSON.
Récapitulatif
Le décodage convertit le texte JSON en tables Lua : les objets deviennent des tables à clés chaînes et les tableaux deviennent des séquences indexées à partir de 1.
Validez toujours le résultat, gérez la valeur nulle avec la sentinelle de la bibliothèque et souvenez-vous que les clés absentes valent simplement nil. Vous allez maintenant réencoder des tables Lua en JSON.
Questions Fréquemment Posées
La leçon « Décoder du JSON en tables » est-elle gratuite ?
Oui — le texte complet de « Décoder du JSON en tables » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Décoder du JSON en tables » ?
Analysez des chaînes JSON. Tu pratiques Lua Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Lua Academy ?
Aucune expérience préalable n'est requise. Lua Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Décoder du JSON en tables » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Lua Academy ?
Oui. Chaque leçon Lua Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi JSON
- Décoder du JSON en tables
- Encoder des tables en JSON
- Gérer les données imbriquées