n8n 아이템이란? JSON 배열과 여러 아이템의 차이

n8n 자동화읽기 약 6분

2026년 9월 13일 내용 개정. 공식 문서와 대조해 설명과 예제를 정리했습니다. 설치 버전에 따라 화면과 옵션 이름은 달라질 수 있습니다.

화면에는 신청자가 3명인데 다음 노드는 한 번만 처리하는 상황이 있습니다. 이때는 ‘배열 안에 데이터가 3개’인 것과 ‘n8n 아이템이 3개’인 것을 먼저 구분해야 합니다. 아이템은 데이터를 전달하는 단위이며, 안에 배열이나 객체를 더 담을 수 있습니다.

이 글에서 확인할 내용: JSON 안의 배열 길이와 n8n 아이템 수를 구분하고, 학생 데이터를 나누어 확인합니다. 대표 사진과 본문 사진은 작업 환경 참고용입니다. 대표 사진: Jefferson Santos / Unsplash.

노트북으로 코드를 작성하는 개발자
노트북으로 코드를 작성하는 개발자. 자동화·개발 작업 환경을 보여주는 참고 사진이며 실제 n8n 실행 화면은 아닙니다. 사진: Danial Igdery / Unsplash

1. 한 아이템의 바깥과 안쪽

[
  {
    "json": {
      "applicationId": "A101",
      "name": "민준",
      "courses": ["엑셀", "PPT"]
    }
  }
]

위 구조의 바깥 배열에는 객체가 하나 있으므로 아이템은 1개입니다. json 안의 courses에 교육명 2개가 들어 있어도 아이템 수가 자동으로 2개가 되지는 않습니다. 문서와 숫자는 주로 json에서, 파일은 binary 속성에서 다룹니다. 공식 데이터 구조 안내는 노드 사이의 데이터가 객체 배열로 전달된다고 설명합니다.

2. 배열을 담은 아이템 1개 만들어 보기

Manual Trigger 뒤에 Code 노드를 연결합니다. JavaScript와 Run Once for All Items를 선택하고 아래 코드를 실행합니다.

return [{
  json: {
    className: "오피스 입문",
    students: [
      { id: "A101", name: "민준" },
      { id: "A102", name: "지수" },
      { id: "A103", name: "서연" }
    ]
  }
}];

예상 결과는 1 item입니다. 현재 학생 배열의 길이는 {{ $json.students.length }}로 읽으면 3이지만, 이것은 학생 필드 안쪽 길이입니다. 첫 학생 이름은 {{ $json.students[0].name }}으로 읽으며 결과는 민준입니다.

3. 학생 3명을 각각의 아이템으로 나누기

앞의 Code 뒤에 Split Out 노드를 연결합니다. Fields To Split Out에 students를 입력하고, 다른 필드 포함 옵션에서 className이 유지되도록 설정합니다. 실행 후 3 items로 늘어났는지 확인하세요. 출력 필드 이름은 Destination Field Name 등의 설정에 따라 달라질 수 있으므로 실제 Output에서 확인한 경로를 사용합니다.

Split Out을 사용하지 않고 개념을 확인하려면, 앞 코드 대신 아래 코드를 독립적인 Code 노드에 넣을 수 있습니다. 이 예제는 처음부터 아이템 3개를 반환합니다.

return [
  { json: { id: "A101", name: "민준", className: "오피스 입문" } },
  { json: { id: "A102", name: "지수", className: "오피스 입문" } },
  { json: { id: "A103", name: "서연", className: "오피스 입문" } }
];
입력 모양아이템 수사용 상황
json.students 안에 학생 3명1학급 단위로 요약
학생마다 별도 json 객체3학생별 분류·처리
json: {}인 객체 1개1내용이 비어 있는 아이템
빈 배열 []0다음 단계로 보낼 데이터 없음
두 모니터와 키보드를 사용하는 개발 환경
두 모니터와 키보드를 사용하는 개발 환경. 자동화·개발 작업 환경을 보여주는 참고 사진이며 실제 n8n 실행 화면은 아닙니다. 사진: Fotis Fotopoulos / Unsplash

4. 파일 URL과 binary는 다르다

json.imageUrl에 이미지 주소가 있어도 파일 자체를 받은 것은 아닙니다. 파일 업로드를 요구하는 다음 노드에서는 HTTP Request 등의 다운로드 동작으로 파일 데이터를 받아야 할 수 있습니다. binary 필드 이름이 data인지 다른 이름인지도 실제 출력에서 확인합니다. binary를 빈 객체로 만들어 놓는 것만으로 파일이 생성되지 않습니다.

5. 변환 뒤에 이름이 엉키는 이유

필터링하거나 순서를 바꾸면 ‘세 번째 아이템’과 ‘신청번호 A103의 아이템’이 더 이상 같지 않을 수 있습니다. 사람마다 다른 데이터를 합칠 때는 단순 순번보다 applicationId 같은 고유 식별자를 사용하세요. Code에서 새 아이템을 만들 때 이전 아이템 연결 정보가 필요한 경우에는 pairedItem도 검토합니다.

이전 노드의 연결된 아이템을 읽는 .item과 특정 순서를 고르는 .all()[2]는 목적이 다릅니다. 자세한 동작은 이전 노드 참조 문서에서 확인할 수 있습니다.

프로그램 코드가 표시된 모니터의 가까운 모습
프로그램 코드가 표시된 모니터의 가까운 모습. 자동화·개발 작업 환경을 보여주는 참고 사진이며 실제 n8n 실행 화면은 아닙니다. 사진: Radowan Nakif Rehan / Unsplash

스스로 확인하는 문제

json 안에 orders 배열 10개가 든 객체 하나를 반환하면 몇 아이템일까요? 정답은 1개입니다. 주문마다 따로 처리하려면 배열을 나누거나 주문별 json 객체 배열을 반환해야 합니다. 반대로 Code가 return []를 반환하면 아이템은 0개이며, 정상적으로 필터링한 결과일 수도 있습니다.

함께 읽을 실습

n8n 첫 워크플로우 실습: 입력부터 조건 분기까지
n8n JSON 데이터 정리: 문자열 금액 변환과 누락값 검사