Travailler avec JSON en JavaScript : analyse et sérialisation pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à JSON et JavaScript

\n

JSON (JavaScript Object Notation) est un format léger d'échange de données qui est devenu la norme pour l'interaction entre le client et le serveur dans les applications web. Grâce à sa simplicité et sa lisibilité, JSON est utilisé partout : des fichiers de configuration aux requêtes API. Dans cet article, nous allons voir comment travailler avec JSON dans l'environnement Node.js, maîtriser l'analyse (conversion d'une chaîne en objet) et la sérialisation (conversion d'un objet en chaîne). Le contenu est destiné aux développeurs débutants déjà familiers avec les bases de JavaScript.

\n\n

Qu'est-ce que JSON et pourquoi en a-t-on besoin ?

\n

JSON est un format textuel basé sur la syntaxe des objets JavaScript. Cependant, JSON n'est qu'une chaîne de caractères qui peut être transmise sur un réseau ou stockée dans un fichier. Les principaux types de données en JSON sont :

\n
    \n
  • Chaînes de caractères (entre guillemets doubles)
  • \n
  • Nombres (entiers et à virgule flottante)
  • \n
  • Valeurs booléennes (true/false)
  • \n
  • null
  • \n
  • Tableaux
  • \n
  • Objets (clés entre guillemets doubles)
  • \n
\n

Exemple d'une chaîne JSON valide :

\n
{\n  "name": "Anna",\n  "age": 28,\n  "isStudent": false,\n  "skills": ["JavaScript", "Node.js"],\n  "address": null\n}
\n

Contrairement à un objet JavaScript classique, JSON nécessite une syntaxe stricte : toutes les clés et les valeurs de chaînes sont placées entre guillemets doubles, et les commentaires sont interdits.

\n\n

Analyse JSON : JSON.parse()

\n

Pour convertir une chaîne JSON en objet JavaScript, on utilise la méthode JSON.parse(). Cela est nécessaire lorsque vous recevez des données du serveur, lisez un fichier ou traitez une entrée utilisateur.

\n\n

Exemple de base d'analyse

\n
const jsonString = '{"name": "Ivan", "age": 30}';\nconst user = JSON.parse(jsonString);\nconsole.log(user.name); // Ivan\nconsole.log(user.age);  // 30
\n\n

Analyse d'un tableau

\n
const jsonArray = '[1, 2, "trois", true]';\nconst arr = JSON.parse(jsonArray);\nconsole.log(arr[2]); // trois
\n\n

Gestion des erreurs d'analyse

\n

Un JSON invalide déclenchera une exception SyntaxError. Utilisez toujours try...catch lorsque vous travaillez avec des données non fiables :

\n
try {\n  const invalid = '{"name": "Erreur}';\n  const result = JSON.parse(invalid);\n} catch (error) {\n  console.error('Erreur d\'analyse :', error.message);\n}
\n

Vous pouvez également passer un deuxième argument — une fonction reviver qui permet de transformer les valeurs pendant l'analyse :

\n
const json = '{"date": "2024-01-15", "count": "42"}';\nconst obj = JSON.parse(json, (key, value) => {\n  if (key === 'date') return new Date(value);\n  if (key === 'count') return Number(value);\n  return value;\n});\nconsole.log(obj.date.getFullYear()); // 2024\nconsole.log(typeof obj.count);       // number
\n\n

Sérialisation JSON : JSON.stringify()

\n

Le processus inverse — conversion d'un objet JavaScript en chaîne JSON — est effectué à l'aide de JSON.stringify(). Cela est nécessaire pour envoyer des données au serveur, les sauvegarder dans un fichier ou les journaliser.

\n\n

Exemple simple de sérialisation

\n
const user = {\n  name: 'Marie',\n  age: 25,\n  isAdmin: true\n};\nconst json = JSON.stringify(user);\nconsole.log(json);\n// {"name":"Marie","age":25,"isAdmin":true}
\n\n

Formatage de la sortie

\n

La méthode accepte trois paramètres : la valeur, une fonction de remplacement (ou un tableau de champs) et le nombre d'espaces pour l'indentation :

\n
const data = {\n  id: 1,\n  title: 'Article',\n  tags: ['js', 'json']\n};\n// Avec une indentation de 2 espaces\nconst prettyJson = JSON.stringify(data, null, 2);\nconsole.log(prettyJson);\n/* Sortie :\n{\n  "id": 1,\n  "title": "Article",\n  "tags": [\n    "js",\n    "json"\n  ]\n}\n*/
\n\n

Filtrage des champs

\n

Le deuxième paramètre peut être un tableau de clés à inclure dans le résultat :

\n
const user = {\n  name: 'Pierre',\n  password: 'secret12                

Blogs

Book Recommendations