Conteúdo

Tutorial de expressões no n8n: $json, $('nó'), datas e funções úteis

As expressões permitem que os parâmetros dos nós mudem dinamicamente conforme os dados. Qualquer campo de parâmetro pode ser alternado para o modo Expression (na alternância Fixed / Expression ao lado do campo ou digitando {{ diretamente).

Dentro de {{ }}, você escreve JavaScript, então pode usar a sintaxe e os métodos de JavaScript.

Leia os dados do item atual: $json

{{ $json.name }}
{{ $json.address.city }}
{{ $json.tags[0] }}
{{ $json["nome do campo"] }}

Quando o nome do campo tem espaços ou caracteres especiais, use colchetes [...].

A maneira mais simples é arrastar um campo do painel INPUT à esquerda para um parâmetro. O n8n gera automaticamente a expressão correta.

O nó Edit Fields usa uma expressão para gerar uma mensagem
Edit Fields: arraste um campo de INPUT à esquerda para a expressão e veja a mensagem montada aparecer imediatamente em OUTPUT à direita

Leia dados de outros nós: $('nome do nó')

$json só pode ler a saída do nó anterior. Para ler dados de um nó mais antigo:

{{ $('Google Sheets').item.json.email }}
SintaxeSignificado
$('nó').itemO item correspondente ao item atual (o mais usado)
$('nó').first()O primeiro item produzido por esse nó
$('nó').last()O último item
$('nó').all()Todos os items (array)
{{ $('Webhook').item.json.body.customer_id }}
{{ $('Obter configurações').first().json.api_url }}
{{ $('Pedidos').all().length }} pedidos

Quando o nome de um nó muda, o n8n atualiza automaticamente o nome nas expressões.

Manipulação de strings

{{ $json.name.trim() }}
{{ $json.email.toLowerCase() }}
{{ $json.title.slice(0, 50) }}…
{{ $json.text.replaceAll('\n', ' ') }}
{{ `Olá ${$json.name}, seu pedido ${$json.order_id} foi enviado.` }}
{{ $json.tags.join('、') }}

O n8n também oferece alguns métodos adicionais:

{{ $json.email.isEmail() }}
{{ $json.content.extractUrl() }}
{{ $json.title.toTitleCase() }}

Números

{{ $json.price * 1.05 }}
{{ Math.round($json.score * 10) / 10 }}
{{ Number($json.amount).toLocaleString('zh-TW') }}
{{ ($json.done / $json.total * 100).toFixed(1) }}%

Às vezes, os números retornados por uma API são strings. Converta-os com Number() antes de fazer cálculos.

Condições

{{ $json.amount > 1000 ? 'VIP' : 'comum' }}
{{ $json.nickname || $json.name }}
{{ $json.phone ?? 'não informado' }}

Quando precisar seguir fluxos diferentes dependendo de uma condição, use os nós If ou Switch, em vez de tratar isso na expressão.

Arrays

{{ $json.items.length }}
{{ $json.items.map(i => i.name).join(', ') }}
{{ $json.items.filter(i => i.stock === 0).length }}
{{ $json.scores.reduce((a, b) => a + b, 0) }}

Data e hora

O n8n inclui a biblioteca de datas Luxon. $now representa a data e hora atuais, e $today representa o início do dia de hoje:

{{ $now.toFormat('yyyy-MM-dd HH:mm') }}
{{ $today.minus({ days: 1 }).toFormat('yyyy/MM/dd') }}
{{ $now.plus({ hours: 2 }).toISO() }}
{{ $now.setZone('Asia/Taipei').toFormat('MM/dd HH:mm') }}
{{ $now.weekday }}                      // 1 = segunda-feira … 7 = domingo

Analise strings de data nos dados:

{{ DateTime.fromISO($json.created_at).toFormat('yyyy-MM-dd') }}
{{ DateTime.fromFormat($json.date, 'yyyy/MM/dd').plus({ days: 7 }).toISODate() }}
{{ $json.created_at.toDateTime().diffTo($now, 'days') }}

O fuso horário segue a configuração do n8n ou do workflow. Lembre-se de defini-lo como Asia/Taipei.

Variáveis internas comuns

VariávelConteúdo
$jsonO item atual
$binaryOs arquivos do item atual
$input.all()Todos os items recebidos por este nó
$now, $todayData e hora atuais, hoje
$execution.idO ID desta execução
$execution.modetest (teste manual) ou production
$workflow.nameNome do workflow
$vars.nameVariável personalizada (disponível em alguns planos)
$runIndexQuantas vezes o nó foi executado nesta execução

Várias linhas e lógica complexa

Você pode escrever uma função executada imediatamente dentro de uma expressão:

{{ (() => {
  const total = $json.items.reduce((s, i) => s + i.price * i.qty, 0);
  return total >= 1000 ? total : total + 60;
})() }}

Quando a lógica passar de algumas linhas, é melhor usar o nó Code, que facilita a leitura e a depuração.

Dicas de depuração

  • Abaixo do campo da expressão, o resultado da prévia aparece em tempo real. Vermelho indica um erro.
  • A prévia usa os dados da execução anterior. Execute os nós anteriores primeiro para ver a prévia.
  • Cannot read properties of undefined significa que uma parte do caminho não existe. Use ?. para evitar o erro: {{ $json.address?.city }}.
  • Para ver o item inteiro: {{ JSON.stringify($json) }}.

Atualizado 12 de outubro de 2026