n8n 워크플로우가 에러를 내는 원인 중 절반은 '데이터 타입 불일치'입니다. 220V 콘센트에 110V 전자제품을 꽂으면 망가지듯, 숫자가 와야 할 자리에 문자열이 오면 노드가 멈춥니다. 이 강의에서 6가지 기본 타입과 JSON 구조, 그리고 {{ }} 표현식을 한 번에 정리합니다.
220V vs 110V — 데이터 타입이 안 맞으면 에러
n8n이 노드 사이에서 데이터를 주고받을 때, 각 데이터는 반드시 하나의 '타입'을 가집니다. 타입이 다르면 다음 노드가 데이터를 처리하지 못합니다. 예를 들어 '42'(문자열)와 42(숫자)는 눈으로 보면 같지만 컴퓨터에게는 완전히 다른 것입니다. 플러그 규격이 다른 것처럼요.
| 타입 | 설명 | 예시 | n8n에서 자주 만나는 상황 |
|---|---|---|---|
| 문자열 (String) | 따옴표로 감싼 텍스트 | "안녕하세요" | 이름, 이메일, 메시지 내용 |
| 숫자 (Number) | 따옴표 없는 수 | 42, 3.14 | 가격, 개수, 점수 |
| 불리언 (Boolean) | 참 또는 거짓 | true / false | IF 노드 조건 결과, 체크박스 |
| 배열 (Array) | 대괄호 [] 안에 순서 있는 목록 | [1, 2, 3] | 여러 이메일, 검색 결과 목록 |
| 객체 (Object) | 중괄호 {} 안에 키-밸류 쌍 | {"name": "홍길동"} | 사용자 정보, API 응답 본문 |
| null | 값 자체가 없음 | null | 필드가 아예 비어 있는 경우 |
null과 빈 문자열 ""은 다릅니다. null은 값이 아예 없는 것, ""은 비어 있는 문자열이 존재하는 것입니다. IF 노드에서 둘을 구별해 조건을 만들어야 정확하게 분기됩니다.
JSON = 컴퓨터들의 국제 공용어
n8n 노드들이 데이터를 주고받을 때 쓰는 형식이 JSON(JavaScript Object Notation)입니다. 국적이 다른 사람들이 영어로 소통하듯, 서로 다른 앱들이 JSON이라는 공통 언어로 대화합니다. n8n 워크플로우 자체도 내부에서는 거대한 JSON 덩어리입니다. 에러가 나면 Output 패널의 JSON 탭을 복사해 AI에게 붙여 넣으면 빠르게 트러블슈팅할 수 있습니다.
JSON 기본 구조 예시 (고객 정보 한 건)
{
"name": "홍길동",
"age": 30,
"active": true,
"scores": [95, 87, 92],
"address": {
"city": "서울",
"district": "강남구"
},
"nickname": null
}
- 키(key)는 반드시 큰따옴표로 감쌉니다: "name"
- 문자열 값도 큰따옴표: "홍길동"
- 숫자·불리언·null은 따옴표 없이: 30, true, null
- 배열은 대괄호 [], 0부터 시작(scores[0] = 95)
- 객체 안에 객체 중첩 가능: address.city = "서울"
- 마지막 항목 뒤에는 쉼표 없음
표현식 {{ }} — 동적 값 꺼내기
노드 필드에 {{ }}를 쓰면 고정 값 대신 이전 노드의 데이터를 동적으로 참조할 수 있습니다. 스프레드시트의 셀 참조(=B2+C2)와 같은 개념입니다. 가장 많이 쓰는 세 가지 변수는 $json(직전 노드 현재 아이템), $now(현재 시각), 그리고 $('노드명')(특정 노드 직접 지정)입니다.
실무에서 자주 쓰는 표현식 모음
{{ $json.name }} -- 현재 아이템의 name 필드
{{ $json.address.city }} -- 중첩 객체 접근
{{ $json.scores[0] }} -- 배열 첫 번째 값 (0부터 시작)
{{ $json["order-id"] }} -- 하이픈 포함 필드명
{{ $now.toISO() }} -- 현재 시각 ISO 형식
{{ $today.format("YYYY-MM-DD") }} -- 오늘 날짜
{{ $now.minus({days: 7}).toISO() }} -- 7일 전
{{ $("Gmail Trigger").item.json.subject }} -- 특정 노드 데이터 직접 접근
배열에서 특정 항목을 꺼낼 때 $json.items[1]처럼 인덱스 번호를 쓰는데, 인덱스는 0부터 시작합니다. 두 번째 항목이 [1]이고 세 번째가 [2]입니다. 이 '0부터 시작' 규칙은 대부분의 프로그래밍 언어에서 공통입니다.
표현식을 직접 타이핑하지 않아도 됩니다. 노드를 한 번 실행한 뒤 표현식 에디터를 열면 왼쪽에 이전 노드 데이터 트리가 나타납니다. 원하는 필드를 오른쪽 입력창으로 드래그하면 표현식이 자동으로 완성됩니다. 에디터 하단 미리보기로 실제 값을 즉시 확인할 수 있습니다.
데이터 타입, JSON 구조, 표현식 문법은 처음에는 낯설지만 Output 패널을 보며 직접 값을 꺼내는 연습을 반복하면 금방 감이 잡힙니다. 이 세 가지를 편하게 다룰 수 있게 되면, 어떤 워크플로우 에러도 두렵지 않습니다.