Encoder des tables en JSON
Sérialisez des données Lua.
Encoder des tables en JSON est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 3 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 de l’encodage
L’encodage est l’opération inverse du décodage : il transforme une table Lua en chaîne JSON. Appelez json.encode(table).
Le résultat est une chaîne sur une seule ligne que vous pouvez écrire dans un fichier ou envoyer sur le réseau.
local json = require("dkjson")
local t = { name = "Leo", age = 9 }
print(json.encode(t))Objets ou tableaux
La manière dont une table Lua est encodée dépend de ses clés. Une table dont les clés entières consécutives commencent à 1 devient un tableau JSON.
Une table dont les clés sont des chaînes devient un objet JSON. Les tables mixtes sont ambiguës et doivent être évitées.
local json = require("dkjson")
print(json.encode({ 1, 2, 3 })) -- [1,2,3]
print(json.encode({ a = 1, b = 2 })) -- {"a":1,"b":2}Mise en forme
Par défaut, JSON est compact. dkjson peut indenter la sortie pour en améliorer la lisibilité en lui transmettant une table d’options contenant indent = true.
Une sortie mise en forme est idéale pour les fichiers de configuration que les utilisateurs modifieront.
local json = require("dkjson")
local t = { name = "Ann", roles = { "dev", "lead" } }
print(json.encode(t, { indent = true }))Encodage des nombres et des booléens
Les nombres et les booléens Lua sont directement encodés dans leurs équivalents JSON. Les entiers comme les nombres à virgule flottante deviennent des nombres JSON.
local json = require("dkjson")
local t = { count = 5, ratio = 1.5, active = true }
print(json.encode(t))Le problème de nil
Vous ne pouvez pas stocker nil dans une table pour représenter JSON null, car l’affectation de nil supprime entièrement la clé.
Pour produire une valeur nulle littérale, utilisez le marqueur de la bibliothèque json.null comme valeur.
local json = require("dkjson")
local t = { middle = json.null }
print(json.encode(t)) -- {"middle":null}Les tableaux clairsemés posent problème
Si une séquence comporte un intervalle manquant, par exemple si l’index 2 vaut nil, Lua ne la considère plus comme un tableau bien formé. L’encodage peut s’arrêter à cet intervalle ou produire un résultat inattendu.
Pour obtenir des tableaux JSON prévisibles, gardez des indices consécutifs en commençant à 1.
local json = require("dkjson")
local t = { [1] = "a", [3] = "c" } -- gap at 2
print(json.encode(t)) -- unreliableÉcrire du JSON dans un fichier
Pour conserver des données, encodez la table en chaîne de caractères, puis écrivez cette chaîne dans un fichier.
C’est ainsi que vous enregistrez des paramètres, des scores ou tout état structuré.
local json = require("dkjson")
local data = { theme = "dark", volume = 8 }
local f = io.open("settings.json", "w")
f:write(json.encode(data, { indent = true }))
f:close()Une table vide devient par défaut un objet
Une table Lua vide {} ne possède aucune clé. Par défaut, dkjson l’encode donc comme un objet vide {}, et non comme un tableau.
Si vous avez besoin d’un tableau vide, dkjson vous permet d’indiquer ce type pour la table ; sinon, le type est ambigu.
local json = require("dkjson")
print(json.encode({})) -- {}L’ordre des clés n’est pas garanti
Les tables Lua n’imposent aucun ordre pour les clés texte ; l’ordre des champs dans le JSON encodé peut donc varier.
Ne vous fiez pas à l’ordre des champs : les consommateurs de JSON doivent rechercher les clés par leur nom et non par leur position.
Cohérence de l’aller-retour
L’encodage suivi du décodage devrait vous donner une table équivalente. Cet aller-retour est un bon moyen de tester la gestion de vos données.
local json = require("dkjson")
local orig = { a = 1, list = { 2, 3 } }
local copy = json.decode(json.encode(orig))
print(copy.a, copy.list[2])Encodage avec cjson
lua-cjson propose également encode. Il est plus rapide, mais offre moins d’options de mise en forme et déclenche des erreurs au lieu de les renvoyer.
Pour obtenir une sortie joliment indentée, dkjson est généralement le choix le plus convivial.
local cjson = require("cjson")
local s = cjson.encode({ ok = true, n = 42 })
print(s)Vérification rapide
Vérifiez votre compréhension de l’encodage des tables Lua.
Récapitulatif
L’encodage transforme les tables Lua en chaînes JSON. Les séquences indexées par des entiers deviennent des tableaux, et les tables indexées par des chaînes deviennent des objets.
Utilisez json.null pour les valeurs nulles littérales, gardez les tableaux contigus et transmettez indent = true pour obtenir une sortie lisible. Vous allez maintenant vous attaquer aux données profondément imbriquées.
Questions Fréquemment Posées
La leçon « Encoder des tables en JSON » est-elle gratuite ?
Oui — le texte complet de « Encoder des tables en JSON » 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 « Encoder des tables en JSON » ?
Sérialisez des données Lua. 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 3 sur 4.
Combien de temps prend la leçon « Encoder des tables en JSON » ?
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