Expression'ları anlamak: $json, $node ve items'ı kod olmadan eşleştirmek

n8n'deki en büyük öğrenme engeli açıklanıyor: Items, $json ve $node ne anlama gelir ve değerleri Drag-and-Drop ile kod olmadan nasıl eşleştirirsiniz.

n8n'de ilk kez bir Workflow oluşturan biri, er ya da geç sabit bir UI ayarının artık yeterli olmadığı bir noktaya gelir: Bir değerin önceki Node'dan gelmesi, giriş verilerine göre değişmesi ya da Workflow'un çok daha başında yer alan bambaşka bir düğümden kaynaklanması gerekir. Birçok yeni kullanıcı için en büyük öğrenme engeli tam da burada başlar, çünkü aniden $json, $node ve items gibi kavramlar ortaya çıkar ve açıklama olmadan şifreli bir kod gibi görünür. Oysa bunun arkasında, n8n'in verileri düğümler arasında nasıl aktardığı bir kez anlaşıldığında oldukça basit bir ilke yatar.

Bu yazı, somut örneklerle bir Item'ın n8n'de gerçekte ne olduğunu, $json ile $node'un nasıl ilişkili olduğunu ve değerleri tek bir satır kod yazmadan Drag-and-Drop ile nasıl eşleştireceğinizi açıklar. Temel olarak, Expression'lar ve dahili veri yapısına ilişkin resmi n8n dokümantasyonu, Temmuz 2026 itibarıyla kullanılmıştır.

n8n'de bir Item gerçekte nedir?

n8n, verileri düğümler arasında her zaman nesnelerden oluşan bir Array olarak aktarır ve bu Array'deki her bir öğe Item olarak adlandırılır. veri yapısına ilişkin n8n dokümantasyonuna göre her Item, sabit `{ json: {...} }` biçimine sahiptir; asıl yük verileri her zaman json anahtarının altında bulunur. İki Item içeren bir örnek şöyle görünür:

  • Item 1: `{ json: { name: "Anna", plz: "18055" } }`
  • Item 2: `{ json: { name: "Jonas", plz: "23552" } }`

Anlamak için önemli olan nokta: n8n'deki bir Node kural olarak her Item'ı tek tek işler ve yapılandırılmış eylemini Array'deki her öğe için tekrarlar. Bir HTTP-Request-Node iki Item aldığında, varsayılan olarak iki istek gönderir, her Item için bir tane. Bunu bir kez içselleştiren biri, n8n'deki Expression'ların neden her zaman o an işlenen Item'a atıfta bulunduğunu, tüm listeye değil, anlar.

$json: Geçerli Item'a erişim

$json, n8n Expression'larında en sık kullanılan değişkendir ve geçerli düğümün o an işlediği Item'ın json verilerini temsil eder. Burada $json, geçerli düğümün Input-Item'ı olan $input.item.json'un kısa biçimidir. Örneğin bir sonraki düğümde yukarıdaki örnekteki adı çıktı olarak vermek isterseniz, bir metin alanına şunu yazarsınız:

`{{ $json.name }}`

n8n, bu ifadeyi çalışma sırasında ilgili Item'ın gerçek değeriyle değiştirir; iki Item durumunda bir kez "Anna", bir kez de "Jonas" olur. İç içe geçmiş alanlara, veriler buna uygun yapılandırılmışsa, nokta gösterimiyle ulaşırsınız, örneğin `{{ $json.adresse.plz }}`.

$node ve $(): Diğer düğümlerden veri almak

Bir değerin doğrudan önceki düğümden değil de Workflow'un daha başında yer alan herhangi bir başka düğümden gelmesi gerektiği anda, $json artık yeterli olmaz. Tam da bunun için $node ve onun ardılı $() vardır. Eski Workflow'larda ve öğreticilerde sıklıkla hâlâ `$node["Node-Name"].json.feld` yazımıyla karşılaşırsınız; bu sözdizimi artık eskimiş sayılır. Güncel, önceki düğümleri referanslamaya ilişkin n8n dokümantasyonunda açıklanan biçim şöyledir:

`{{ $('Node-Name').item.json.feld }}`

Yalnızca o an bağlı olan Item'ı değil de belirli bir düğümün özellikle ilk, son veya tüm Items'ını almak isterseniz, ek olarak `$('Node-Name').first()`, `$('Node-Name').last()` ve `$('Node-Name').all()` size sunulur. Bir Workflow'da $node ile yazılmış eski bir ifadeyle karşılaşırsanız, gelecekteki n8n güncellemelerinden sonra da güvenilir biçimde çalışması için onu fırsat buldukça $() yazımına geçirmeniz yerinde olur.

Örnek: E-posta adresini önceki bir form düğümünden almak

Diyelim ki bir Workflow, diğer verilerin yanı sıra bir e-posta adresi de toplayan "Kontaktformular" adlı bir form düğümüyle başlıyor. Üç düğüm sonra, bir CRM'e giden bir HTTP-Request isteğinde, aradaki düğümler artık hiç e-posta verisi içermese bile tam olarak bu adrese yeniden ihtiyacınız olur. Bunun için kullanılan ifade şöyledir:

`{{ $('Kontaktformular').item.json.email }}`

Böylece, aradaki düğümlerin verilerle ne yaptığından bağımsız olarak, doğrudan Kontaktformular'dan gelen özgün Item'a erişirsiniz.

Kod olmadan eşleme: n8n'de Drag-and-Drop

Expression'lara en rahat giriş, hiç de kod yazmaktan geçmez. n8n, bir düğümün Input-Panel'inde gelen verileri liste veya tablo olarak gösterir ve her bir alanı fareyle doğrudan bir parametre alanına sürükleyebilirsiniz. n8n bundan uygun ifadeyi otomatik olarak oluşturur, örneğin `{{ $json.fruit }}`, üstelik sözdizimini kendiniz bilmenize gerek kalmadan. Expression'ları veri dönüştürme düğümleriyle karşılaştıran n8n dokümantasyonuna göre bu yöntem, özellikle önceki verilerden yalnızca tek bir değeri devralmak istediğinizde işe yarar, çünkü n8n çalışma sırasında hangi somut değerin yerleştirileceğini doğrudan önizlemede gösterir. Sıralama, birleştirme veya yinelenenleri kaldırma gibi işlemler için ise dokümantasyon, hazır veri dönüştürme düğümlerini önerir, çünkü bunlar hiçbir Expression gerektirmez ve yönlendirmeli bir arayüz üzerinden kullanılır.

Başlangıçta karşılaşılan tipik tuzaklar

  • Item ile tüm listenin karıştırılması: $json her zaman yalnızca geçerli Item'ı verir, hiçbir zaman tüm Items'ı bir kerede vermez. Tüm Items üzerinden geçmek isteyen, $input.all() veya $('Node-Name').all() ve çoğunlukla bir döngü mantığı ya da bir kod düğümü kullanır.
  • Eski öğreticilerden gelen eskimiş $node sözdizimi: İnternetteki birçok eski kılavuz hâlâ $node["Name"].json gösterir; bu, güncel n8n sürümlerinde hatalara yol açabilir. Dokümantasyonun Expression referansı bunun yerine tutarlı biçimde $() yazımını kullanır.
  • Kendi kodunuzda eksik json anahtarı: Kod düğümünde kendisi veri döndüren biri, döndürülen her nesnenin yeniden `{ json: {...} }` içine sarılmış olması gerektiğine dikkat etmelidir; aksi hâlde n8n bir hata bildirir.
  • Expression hiçbir değer göstermiyor: Çoğunlukla bunun nedeni, referans verilen düğümün bu çalışma yolunda henüz hiç çalışmamış olması ya da geçerli Item'daki alanın gerçekten boş olmasıdır. İlgili düğümün Input-Panel'ine bir bakış, bunu koddaki her türlü hata aramasından daha hızlı açıklığa kavuşturur.

Bu dört noktayı bir kez içselleştiren biri, n8n'deki en büyük başlangıç engelini aşmış olur ve o andan itibaren, geliştirici geçmişi olmasa bile kendi Workflow'ları üzerindeki denetimi elinde tutar. Daha karmaşık otomasyonları kurarken yine de deneyimli bir desteğe güvenmeyi tercih edenler, NordFlux'un n8n otomasyonunda sabit fiyatlı ve Alman veri egemenliğine sahip bir uygulama bulur.

Sık Sorulan Sorular

$json ile $input.item arasındaki fark nedir?

$json, $input.item.json'un kısa biçimidir ve doğrudan geçerli Item'ın json verilerini verir. $input.item ise olası bir binary anahtarı da dahil olmak üzere Item nesnesinin tamamını verir; bu nedenle yalnızca normal alan değerlerine erişmek istediğinizde $json, uygulamada neredeyse her zaman daha kısa ve daha yaygın yoldur.

Neden eski Workflow'larda $() yerine $node görüyorum?

$node["Name"].json, belirli bir düğümden veri referanslamak için kullanılan özgün sözdizimiydi, ancak artık eskimiş sayılıyor. n8n bunun yerine, yeniden adlandırmalar ve gelecekteki sürüm değişiklikleriyle daha kararlı biçimde başa çıkan $('Name') yazımını önerir. $node içeren eski Workflow'lar çoğunlukla çalışmaya devam eder, ancak ilk fırsatta güncellenmelidir.

$json ile bambaşka bir düğümdeki bir alana da erişebilir miyim?

Hayır, $json her zaman yalnızca geçerli düğümdeki doğrudan gelen veri akışının Item'ına atıfta bulunur. Daha başta yer alan herhangi bir başka düğümdeki alanlar için, önceki düğümleri referanslamaya ilişkin dokümantasyonda açıklandığı gibi, $('Node-Name').item.json.feldname yazımına ihtiyacınız vardır.

Expression'ları her zaman elle mi yazmam gerekir?

Hayır, çoğunlukla gerekmez. Alanları Input-Panel'den doğrudan Drag-and-Drop ile bir parametre alanına sürükleyebilirsiniz, n8n uygun ifadeyi otomatik olarak oluşturur. Elle yazmak özellikle, daha uzaktaki bir düğümden gelen verilere erişmek ya da değerleri ek olarak .toUpperCase() veya .map() gibi yöntemlerle işlemek istediğinizde işe yarar.

Bir Item, referans verilen alanı hiç içermiyorsa ne olur?

O zaman Expression, bir hata yerine çoğunlukla undefined veya boş bir değer döndürür; ancak kendisi var olmayan iç içe geçmiş bir nesnenin alanına erişiyorsanız durum farklıdır. Bu gibi durumlarda, çalışmayı yarıda kestirmek yerine otomatik olarak bir varsayılan değer yerleştirmek için Expression referansındaki $ifEmpty() işlevi yardımcı olur.

NordFlux hakkında

NordFlux UG (haftungsbeschränkt)

NordFlux, kuruluşlar için dijital çalışanlar kurar: tekrar eden işleri üstlenen otomasyonlar ve KI ajanları. Kontrol sizde kalır.

Hakkımızda daha fazlası
Ücretsiz ön analiz

Otomasyon veya KI hakkında somut sorularınız mı var?

Ücretsiz bir ön analizde durumunuzu doğrudan görüşürüz. Bağlayıcı değildir.

Expression'ları anlamak: $json, $node ve items