Warning: session_start(): Session cannot be started after headers have already been sent in /var/www/html/wp-content/plugins/postmagthemes-demo-import/inc/WXRImporter.php on line 12 Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/themes/generatepress/functions.php:11) in /var/www/html/wp-includes/feed-rss2.php on line 8 n8n JSON 데이터 구조 – air-geumwoo BLOG https://air-geumwoo.com Mon, 20 Jul 2026 07:42:40 +0000 ko-KR hourly 1 https://wordpress.org/?v=7.0.3 n8n 데이터 핸들링 및 JSON 변환 기술 완벽 마스터 가이드 https://air-geumwoo.com/n8n-data-handling-json-transformation/ https://air-geumwoo.com/n8n-data-handling-json-transformation/#respond Mon, 20 Jul 2026 07:42:40 +0000 https://air-geumwoo.com/n8n-data-handling-json-transformation/ 더 읽기]]>

n8n 데이터 핸들링 및 JSON 변환 기술 완벽 마스터 가이드

본 가이드는 n8n 자동화의 핵심인 데이터 핸들링 기술을 완벽히 마스터하기 위한 모든 것을 다룹니다. n8n의 기본 데이터 단위인 JSON과 Item의 구조를 이해하고, 코딩 없이 데이터를 가공하는 Set 노드, JavaScript를 활용한 Code 노드, 그리고 워크플로우를 동적으로 만드는 표현식(Expression) 사용법까지 단계별로 학습하여 데이터 파이프라인을 완벽하게 제어하는 전문가로 거듭나세요.

목차

서론: 자동화의 품질을 결정하는 n8n 데이터 핸들링의 모든 것

n8n으로 멋진 자동화 워크플로우를 구축했지만, 원하는 대로 데이터가 가공되지 않아 어려움을 겪고 계신가요? 성공적인 업무 자동화, 즉 디지털 트랜스포메이션의 첫걸음은 단순히 노드를 시각적으로 연결하는 것을 넘어, 그 사이를 흐르는 데이터를 얼마나 잘 이해하고 제어하는지에 달려 있습니다. 데이터는 자동화의 혈액과도 같으며, 이 혈액을 자유자재로 다룰 수 있을 때 비로소 워크플로우는 진정한 생명력을 얻습니다.

이 글의 목표는 여러분이 n8n 데이터 핸들링 및 JSON 변환 기술을 완벽하게 마스터하여, 어떤 복잡한 시나리오에서도 데이터를 자유자재로 다룰 수 있도록 돕는 것입니다. 데이터 파이프라인의 모든 단계를 완벽하게 제어하는 전문가로 거듭나 보세요.

이 가이드를 통해 다음 핵심 기술들을 배우게 될 것입니다.

  • 기본 데이터 단위: n8n의 기본 데이터 단위인 JSON과 Item의 구조
  • 노코드 데이터 매핑: 코딩 없이 데이터를 매핑하는 Set 노드 활용법
  • 코드 기반 데이터 변환: 코드를 통해 복잡한 데이터를 변환하는 Code 노드 활용법
  • 동적 데이터 참조: 동적으로 데이터를 참조하는 표현식(Expression) 사용법
  • 데이터 정제: 원하는 데이터만 골라내는 추출 및 필터링 기법
디지털 트랜스포메이션과 데이터 파이프라인을 상징하는 홀로그램 데이터 스트림이 흐르는 미래형 워크스페이스 공간의 실사 이미지

n8n 데이터의 기본: n8n JSON 데이터 구조와 Item 완벽 이해하기

n8n 자동화의 세계를 이해하기 위한 첫 번째 열쇠는 모든 데이터가 ‘Item 객체들의 배열’이라는 단 하나의 규칙을 따른다는 점을 아는 것입니다. 이 기본 원칙만 이해해도 데이터 흐름을 파악하는 것이 훨씬 수월해집니다.

n8n JSON 데이터 구조의 핵심

n8n에서 한 노드에서 다음 노드로 데이터가 전달될 때, 그 형태는 항상 배열(Array)입니다. 데이터가 단 한 개일지라도 [ ... ] 대괄호 안에 감싸여 있습니다.

  • Item: 배열 안의 각 중괄호 {...}로 묶인 객체를 Item이라고 부릅니다. Item은 n8n이 처리하는 데이터의 최소 단위입니다.
  • Item의 속성: 각 Item은 두 가지 핵심 속성을 가질 수 있습니다.
    • json: 우리가 흔히 다루는 텍스트, 숫자, 고객 정보 등 모든 구조화된 데이터는 이 json 객체 안에 저장됩니다. 예를 들어, [ { "json": { "name": "Alice", "email": "alice@example.com" } } ] 와 같은 구조를 가집니다.
    • binary: 이미지, PDF, CSV 파일 등 파일 기반 데이터는 binary 속성에 담깁니다.

n8n 공식 문서에 따르면, 모든 입출력 데이터는 이처럼 ‘객체들의 배열’ 형태를 따르며, 각 객체(Item)는 json 속성을 필수로 포함하는 표준 구조를 가집니다. n8n 편집기 화면에서 ‘Table’ 뷰는 스프레드시트처럼 깔끔하게 보여주지만, ‘JSON’ 뷰를 클릭하면 [ { "json": { ... } } ] 라는 실제 데이터 구조를 직접 확인할 수 있습니다. 이 구조를 이해하는 것이 n8n Item 활용법의 시작점입니다.

JSON 데이터 구조를 상징하는 투명한 큐브들이 정교하게 배열된 3D 시각화 이미지

코딩 없이 데이터 가공하기: n8n 필드 매핑 가이드 Set 노드

데이터 구조를 이해했다면, 이제 데이터를 원하는 형태로 바꾸는 방법을 배울 차례입니다. Set 노드는 코딩 한 줄 없이 데이터를 추가, 변경, 삭제할 수 있는 가장 기본적이고 강력한 도구입니다. 들어오는 Item을 기반으로 새로운 형태의 Item을 만들어내는 데이터 재구성의 핵심 노드입니다.

Set 노드의 주요 기능

기능 설명 예시 (Value 필드)
새로운 필드 추가 기존에 없던 새로운 데이터 필드(Key-Value)를 만듭니다. ‘Add Field’를 클릭하여 시작합니다. 정적 값: completed
동적 값: {{ $json.firstName }} {{ $json.lastName }}
기존 필드 값 변경 이미 있는 필드의 값을 새로운 값으로 덮어씁니다. ‘Name’에 기존 필드명을 그대로 사용합니다. {{ $json.email.toLowerCase() }}
필드 이름 변경 특정 필드의 이름을 바꿉니다. ‘Name’에 새 이름을, ‘Value’에 기존 값을 참조하는 표현식을 넣습니다. {{ $json.oldName }}
불필요한 필드 제거 ‘Keep Only Set’ 옵션을 활성화하면, Set 노드에 설정된 필드만 남고 나머지는 모두 사라집니다. (옵션 체크)

예를 들어, 고객의 성(lastName)과 이름(firstName)을 합쳐 전체 이름(fullName) 필드를 만들고 싶다면, Set 노드에서 ‘Name’에 fullName을 입력하고 ‘Value’에 n8n 표현식 Expression 사용법에 따라 {{ $json.firstName }} {{ $json.lastName }} 라고 입력하면 됩니다. 이처럼 Set 노드는 데이터 클렌징과 정제 작업에 필수적입니다.

코딩 없이 데이터를 매핑하는 깔끔한 UI 디자인과 업무에 집중하는 전문가의 손을 보여주는 실사 이미지

JavaScript로 무한한 데이터 변환: n8n Code 노드 활용 데이터 변환

Set 노드만으로 해결하기 어려운 복잡한 규칙이 필요할 때가 있습니다. 예를 들어 여러 조건을 동시에 확인하거나, 목록 데이터를 하나씩 처리하며 계산해야 할 때 Code 노드가 해결사 역할을 합니다. Code 노드는 JavaScript 코드를 직접 작성하여 데이터 변환의 한계를 없애줍니다.

Code 노드는 언제 사용할까요?

  • 여러 필드 값을 조합해 복잡한 if/else 조건부 로직을 적용해야 할 때
  • 상품 목록(배열)을 반복하며 총합계를 계산하는 등 루프(loop)가 필요할 때
  • 외부 라이브러리 없이 순수 JavaScript 함수로 데이터를 정교하게 가공해야 할 때

Code 노드 기본 사용법 및 예시

Code 노드는 이전 노드의 모든 Item이 담긴 items 라는 배열 변수를 입력받습니다. 코드를 실행한 후에는 반드시 n8n이 이해할 수 있는 데이터 구조, 즉 [ { "json": { ... } } ] 형태의 배열을 return 해야 합니다.

예시: 고객 등급 조건부 부여
고객의 구매 금액(amount)에 따라 등급을 부여하는 코드입니다.

for (let item of items) {
  // 구매 금액이 100 이상이면 'VIP', 아니면 'Regular' 등급 부여
  if (item.json.amount >= 100) {
    item.json.grade = 'VIP';
  } else {
    item.json.grade = 'Regular';
  }
}
// 가공된 items 배열 전체를 반환
return items;

n8n 공식 문서에서도 강조하듯, Code 노드는 items 배열에 직접 접근해 복잡한 로직을 수행한 후, 표준 데이터 구조로 결과를 반환하는 원리로 동작합니다. 이를 통해 n8n Code 노드 활용 데이터 변환의 무한한 가능성을 열 수 있습니다.

자바스크립트 코드가 선명하게 보이는 모니터와 그 주변에서 변환되는 데이터 입자를 표현한 기술적인 이미지

워크플로우의 동적 제어: n8n 표현식 Expression 사용법 완벽 정복

워크플로우를 만들다 보면 특정 값을 직접 입력하는 대신, 이전 단계의 결과를 가져와 사용해야 하는 경우가 많습니다. 이때 사용하는 것이 바로 ‘표현식(Expression)’입니다. 표현식은 {{ }} 이중 중괄호로 감싸진 특별한 문법으로, 워크플로우 내의 다른 데이터에 동적으로 접근하게 해주는 열쇠입니다.

핵심 표현식 변수 및 활용법

변수 설명 사용 예시
{{ $json.fieldName }} 가장 중요하고 자주 사용됩니다. 현재 처리 중인 Item의 json 객체 내 특정 필드 값에 접근합니다. {{ $json.name }}
{{ $item(index).json.fieldName }} 특정 순서(index)에 있는 Item의 데이터에 접근합니다. 0은 첫 번째 Item을 의미합니다. {{ $item(0).json.email }}
{{ $items("노드 이름")[index].json.fieldName }} 특정 노드의 출력 결과 전체에 접근합니다. 여러 데이터 소스를 조합할 때 필수적입니다. {{ $items("Read from Sheet")[0].json.city }}
{{ $now }} 현재 날짜와 시간을 ISO 형식으로 가져옵니다. {{ $now }}
{{ $env.YOUR_VARIABLE }} n8n 실행 환경에 설정된 환경 변수 값을 가져옵니다. API 키 등 민감 정보를 관리할 때 유용합니다. {{ $env.API_KEY }}

표현식 안에서는 JavaScript의 내장 함수나 간단한 연산도 가능합니다. 예를 들어 {{ $json.title.toUpperCase() }}는 제목을 대문자로 바꾸고, {{ $json.isActive ? "활성" : "비활성" }} 와 같은 삼항 연산자로 간단한 조건 처리도 가능합니다. 이처럼 n8n 표현식 Expression 사용법을 익히면 하드코딩 없는 유연하고 재사용 가능한 워크플로우를 설계할 수 있습니다.

동적 데이터 참조를 상징하는 빛나는 이중 중괄호 기호가 디지털 공간에 떠 있는 시각적 이미지

원하는 결과만 얻기 위한 n8n 데이터 추출 및 필터링

워크플로우가 항상 모든 데이터를 다음 단계로 넘겨야 하는 것은 아닙니다. 수백 개의 데이터 중 특정 조건을 만족하는 몇 개의 데이터만 처리해야 할 때, 필터링 기술은 워크플로우의 효율성과 정확성을 극대화합니다.

상황에 맞는 필터링 도구 선택하기

  • Filter 노드: 가장 직관적인 필터링 도구입니다. “고객의 국가 코드가 ‘KR’과 일치하는가?” 와 같은 명확한 조건을 설정하여, 조건을 통과하는 Item만 남기고 나머지는 걸러냅니다. 단순 조건 필터링에 가장 적합합니다.
  • Item Lists 노드: 목록 자체를 편집하고 싶을 때 사용합니다. 예를 들어, 데이터 중 상위 5개만 남기거나(Limit), 이메일 주소 기준으로 중복된 Item을 하나로 합치거나(Distinct), 특정 필드 기준으로 정렬(Sort)하는 등의 작업에 특화되어 있습니다.
  • Split In Batches 노드: 수천, 수만 개의 Item을 한 번에 API로 전송하면 과부하 또는 API 제한(Rate Limit)에 걸릴 수 있습니다. 이 노드는 대량의 데이터를 100개씩과 같이 작은 묶음(Batch)으로 나누어, 워크플로우가 안정적으로 순차 처리하도록 돕습니다. 대규모 데이터 처리 자동화의 필수 노드입니다.
  • 표현식을 이용한 고급 필터링: Code 노드 안에서 JavaScript의 .filter() 배열 함수를 사용하면 여러 조건을 조합하는 등 훨씬 복잡한 로직으로 데이터를 걸러낼 수 있습니다.

이러한 n8n 데이터 추출 및 필터링 도구들을 적재적소에 활용하면, 불필요한 연산을 줄이고 API 호출 횟수를 최적화하여 더 빠르고 안정적인 자동화 시스템을 구축할 수 있습니다.

데이터 덩어리들이 깔끔하게 필터링되어 정돈된 결과물로 나오는 과정을 표현한 정교한 3D 렌더링 이미지

결론: 데이터 핸들링 마스터, 진정한 n8n 전문가로 거듭나기

지금까지 n8n 자동화의 심장부인 데이터 핸들링 기술을 깊이 있게 탐험했습니다. 단순히 노드를 연결하는 것을 넘어, 데이터의 흐름을 이해하고 직접 제어하는 능력을 갖추는 것이 자동화 프로젝트의 성패를 좌우합니다.

오늘 배운 핵심 내용을 다시 정리해 보겠습니다.

  • n8n JSON 데이터 구조: 모든 데이터는 Item의 배열 [ { "json":{...} } ] 형태라는 것을 기억하세요.
  • Set 노드: 코딩 없이 필드를 추가, 변경, 삭제하는 가장 빠른 방법입니다.
  • Code 노드: JavaScript를 통해 복잡한 비즈니스 로직도 데이터 변환에 녹여낼 수 있습니다.
  • 표현식: {{ $json.field }} 와 같은 표현식은 워크플로우에 생명을 불어넣는 동적 제어의 핵심입니다.
  • 데이터 필터링: 필요한 데이터만 정확히 추출하여 워크플로우의 효율을 극대화합니다.

이 기술들을 자유자재로 활용할 수 있게 된 여러분은 더 이상 워크플로우를 ‘만드는’ 사용자가 아닙니다. 데이터를 ‘설계하고 제어하는’ 진정한 n8n 전문가로 거듭난 것입니다. 오늘 배운 n8n 데이터 핸들링 및 JSON 변환 기술을 바탕으로 기존의 워크플로우를 개선하거나, 완전히 새로운 아이디어를 현실로 만들어보세요. 궁금한 점이 생긴다면 주저 말고 n8n 공식 커뮤니티 포럼에서 질문하고 함께 성장해 나가시길 바랍니다.

복잡한 자동화 워크플로우를 완벽하게 제어하는 전문가의 자신감 있는 모습을 담은 고화질 이미지

자주 묻는 질문 (FAQ)

Q: Set 노드와 Code 노드의 가장 큰 차이점은 무엇인가요?

A: Set 노드는 코딩 없이 정해진 UI를 통해 필드를 추가, 변경, 제거하는 등 간단하고 직관적인 데이터 재구성에 사용됩니다. 반면 Code 노드는 JavaScript 코드를 직접 작성하여 조건문, 반복문 등 복잡한 비즈니스 로직을 포함한 데이터 변환을 자유롭게 구현할 수 있다는 점에서 차이가 있습니다.

Q: n8n에서 모든 데이터는 항상 배열(Array) 형태로 전달되나요?

A: 네, 맞습니다. n8n의 핵심 설계 원칙 중 하나는 노드 간에 전달되는 모든 데이터가 ‘Item 객체들의 배열’ 형태를 따른다는 것입니다. 데이터가 단 하나만 존재하더라도 항상 [ { ... } ] 와 같이 배열로 감싸여 전달됩니다. 이는 데이터 처리의 일관성을 유지하는 데 매우 중요합니다.

Q: 표현식(Expression)은 노드의 어떤 필드에서나 사용할 수 있나요?

A: 대부분의 입력 필드에서 표현식을 사용할 수 있습니다. 필드 옆에 작은 플라스크 또는 ‘Add Expression’ 버튼이 보인다면 해당 필드에서 표현식을 사용하여 동적인 값을 참조할 수 있습니다. {{ $json.fieldName }} 와 같은 표현식을 활용하면 이전 노드의 결과값을 현재 노드의 입력값으로 손쉽게 사용할 수 있어 매우 유연한 워크플로우 설계가 가능해집니다.

]]>
https://air-geumwoo.com/n8n-data-handling-json-transformation/feed/ 0