Comprendre les expressions : mapper $json, $node et items sans code
Le plus grand obstacle d'apprentissage de n8n expliqué : ce que signifient items, $json et $node et comment mapper des valeurs par glisser-déposer sans code.
Quiconque construit pour la première fois un workflow dans n8n arrive tôt ou tard à un point où un réglage fixe de l'interface ne suffit plus : une valeur doit provenir du node précédent, changer selon les données d'entrée, ou provenir d'un tout autre node plus en amont dans le workflow. C'est exactement là que commence, pour de nombreux nouveaux utilisateurs, le plus grand obstacle d'apprentissage, car des termes comme $json, $node et items apparaissent soudain, qui, sans explication, ressemblent à du code cryptique. Pourtant, derrière cela se cache un principe assez simple, dès lors qu'il est clair comment n8n transmet les données entre les nodes.
Cet article explique à l'aide d'exemples concrets ce qu'est réellement un item dans n8n, comment $json et $node sont liés, et comment tu mappes des valeurs par glisser-déposer, sans écrire toi-même une seule ligne de code. Il se base sur la documentation officielle n8n sur les expressions et sur la structure de données interne, à la date de juillet 2026.
Qu'est-ce qu'un item dans n8n en réalité ?
n8n transmet toujours les données entre les nodes sous forme d'un tableau d'objets, et chaque élément individuel de ce tableau est appelé item. Selon la documentation n8n sur la structure de données chaque item a la forme fixe `{ json: {...} }`, les données utiles réelles se trouvant toujours sous la clé json. Un exemple avec deux items ressemble à ceci :
- Item 1 : `{ json: { name: "Anna", plz: "18055" } }`
- Item 2 : `{ json: { name: "Jonas", plz: "23552" } }`
Important pour la compréhension : un node dans n8n traite en général chaque item individuellement et répète son action configurée pour chaque élément du tableau. Si un node HTTP Request reçoit deux items, il envoie par défaut aussi deux requêtes, une par item. Une fois que l'on a intégré cela, on comprend aussi pourquoi les expressions dans n8n se réfèrent toujours à l'item actuellement traité et non à la liste entière.
$json : accéder à l'item actuel
$json est la variable la plus fréquemment utilisée dans les expressions n8n et représente les données json de l'item que le node actuel est en train de traiter. $json est en fait une forme abrégée de $input.item.json, l'item d'entrée du node actuel. Si, par exemple, tu veux afficher dans le node suivant le nom de l'exemple ci-dessus, tu écris dans un champ de texte :
`{{ $json.name }}`
n8n remplace cette expression lors de l'exécution par la valeur réelle de l'item concerné, donc avec deux items une fois "Anna" et une fois "Jonas". Tu accèdes aux champs imbriqués avec la notation par points, par exemple `{{ $json.adresse.plz }}`, à condition que les données soient structurées en conséquence.
$node et $() : récupérer des données d'autres nodes
Dès qu'une valeur ne doit pas provenir du node directement précédent, mais d'un tout autre node plus en amont dans le workflow, $json ne suffit plus. C'est exactement à cela que servent $node, ou son successeur $(). Dans les anciens workflows et tutoriels, tu trouves souvent encore la notation `$node["Node-Name"].json.feld`, cette syntaxe est désormais considérée comme obsolète. La forme actuelle, décrite dans la documentation n8n sur la référence aux nodes précédents est :
`{{ $('Node-Name').item.json.feld }}`
Si tu veux non seulement l'item actuellement lié, mais spécifiquement le premier, le dernier ou tous les items d'un node donné, tu disposes en plus de `$('Node-Name').first()`, `$('Node-Name').last()` et `$('Node-Name').all()`. Si tu trouves dans un workflow une ancienne expression écrite avec $node, il vaut la peine de la faire évoluer vers la notation $() à l'occasion, afin qu'elle continue de fonctionner de manière fiable même après les futures mises à jour de n8n.
Exemple : récupérer une adresse e-mail depuis un node de formulaire antérieur
Supposons qu'un workflow commence par un node de formulaire nommé "Kontaktformular", qui capture entre autres une adresse e-mail. Trois nodes plus loin, dans un appel HTTP Request vers un CRM, tu as de nouveau besoin exactement de cette adresse, même si les nodes intermédiaires eux-mêmes ne contiennent plus de données e-mail. L'expression pour cela est :
`{{ $('Kontaktformular').item.json.email }}`
Ainsi, indépendamment de ce que les nodes intermédiaires ont fait avec les données, tu accèdes directement à l'item d'origine du node Kontaktformular.
Mapping sans code : glisser-déposer dans n8n
L'accès le plus confortable aux expressions ne passe pas du tout par la saisie de code. Dans le panneau d'entrée d'un node, n8n affiche les données entrantes sous forme de liste ou de tableau, et chaque champ individuel peut être glissé directement à la souris dans un champ de paramètre. n8n génère automatiquement à partir de cela l'expression correspondante, par exemple `{{ $json.fruit }}`, sans que tu aies besoin de connaître la syntaxe toi-même. Selon la documentation n8n sur les expressions par rapport aux nodes de transformation de données cette méthode est particulièrement utile lorsque tu veux seulement reprendre une seule valeur des données précédentes, car n8n montre directement dans l'aperçu quelle valeur concrète sera utilisée lors de l'exécution. Pour des opérations comme trier, fusionner ou supprimer les doublons, la documentation recommande en revanche les nodes de transformation de données tout prêts, car ceux-ci se passent de toute expression et sont utilisés via une interface guidée.
Pièges typiques au démarrage
- Confusion entre item et liste entière : $json ne renvoie toujours que l'item actuel, jamais tous les items à la fois. Quiconque veut parcourir tous les items a besoin de $input.all() ou $('Node-Name').all() et, la plupart du temps, d'une logique de boucle ou d'un node Code.
- Syntaxe $node obsolète issue d'anciens tutoriels : De nombreux tutoriels plus anciens sur le web montrent encore $node["Name"].json, ce qui peut provoquer des erreurs dans les versions actuelles de n8n. La référence des expressions de la documentation utilise à la place, de manière cohérente, la notation $().
- Clé json manquante avec ton propre code : Si tu renvoies toi-même des données dans un node Code, tu dois veiller à ce que chaque objet renvoyé soit à nouveau enveloppé dans `{ json: {...} }`, sinon n8n signale une erreur.
- L'expression n'affiche aucune valeur : Le plus souvent, cela vient du fait que le node référencé n'a pas encore été exécuté dans ce chemin d'exécution, ou que le champ dans l'item actuel est effectivement vide. Un coup d'œil dans le panneau d'entrée du node concerné clarifie cela plus rapidement que toute recherche d'erreur dans le code.
Une fois que tu as intégré ces quatre points, tu as franchi le plus grand obstacle d'entrée dans n8n et tu gardes désormais le contrôle sur tes propres workflows, même sans background de développeur. Si, pour la construction d'automatisations plus complexes, tu préfères tout de même t'appuyer sur un soutien expérimenté, tu trouveras chez l'automatisation n8n de NordFlux une réalisation à prix fixe et avec souveraineté des données allemande.
Questions fréquentes
Quelle est la différence entre $json et $input.item ?
$json est une forme abrégée de $input.item.json et renvoie directement les données json de l'item actuel. $input.item renvoie en revanche l'objet item complet, y compris une éventuelle clé binary, c'est pourquoi $json est en pratique presque toujours la voie la plus courte et la plus courante lorsque tu veux seulement accéder à des valeurs de champs normales.
Pourquoi je vois $node au lieu de $() dans d'anciens workflows ?
$node["Name"].json était la syntaxe d'origine pour référencer des données d'un node précis, mais est désormais considérée comme obsolète. n8n recommande à la place la notation $('Name'), qui gère de manière plus stable les renommages et les futurs changements de version. Les anciens workflows avec $node continuent la plupart du temps de fonctionner, mais devraient être adaptés à la prochaine occasion.
Puis-je aussi utiliser $json pour accéder à un champ d'un tout autre node ?
Non, $json se réfère toujours uniquement à l'item du flux de données entrant directement au node actuel. Pour des champs provenant d'un autre node quelconque situé plus en amont dans le workflow, tu as besoin de la notation $('Node-Name').item.json.feldname, comme décrit dans la documentation sur la référence aux nodes précédents.
Dois-je toujours taper les expressions à la main ?
Non, la plupart du temps non. Tu peux glisser des champs depuis le panneau d'entrée directement dans un champ de paramètre, n8n génère automatiquement l'expression correspondante. Taper à la main vaut surtout la peine lorsque tu veux accéder à des données d'un node plus éloigné ou traiter en plus les valeurs avec des méthodes comme .toUpperCase() ou .map().
Que se passe-t-il si un item ne contient pas du tout le champ référencé ?
Alors l'expression renvoie généralement undefined ou une valeur vide, plutôt qu'une erreur, sauf si tu accèdes à un champ d'un objet imbriqué qui n'existe pas lui-même. Dans de tels cas, la fonction $ifEmpty() de la référence des expressions aide à insérer automatiquement une valeur par défaut, au lieu de faire échouer l'exécution.
NordFlux UG (haftungsbeschränkt)
NordFlux construit des employés numériques pour les organisations : des automatisations et des agents KI qui prennent en charge le travail répétitif. Vous gardez le contrôle.
Des questions concrètes sur l’automatisation ou l’IA ?
Lors d’une analyse initiale gratuite, nous discutons directement de votre cas. Sans engagement.