n8n item JSON 구조: 여러 아이템과 배열을 직접 변환하는 예제

n8n 자동화읽기 약 2분

n8n에서 ‘여러 아이템’과 ‘한 아이템 안의 배열’은 다릅니다

n8n에서 자주 생기는 오류 중 하나는 여러 아이템과 하나의 JSON 배열을 같은 것으로 생각하는 것입니다. 이 글은 개념 설명보다 입력과 출력 예제로 차이를 확인합니다.

1. 여러 아이템

[
  {"json":{"id":"A1","amount":12000}},
  {"json":{"id":"A2","amount":8000}}
]

위 예시는 두 개의 아이템입니다. 다음 노드는 기본적으로 두 아이템을 각각 처리할 수 있습니다.

2. 한 아이템 안의 배열

[
  {
    "json":{
      "orders":[
        {"id":"A1","amount":12000},
        {"id":"A2","amount":8000}
      ]
    }
  }
]

여기서는 아이템은 하나이고 orders 속성 안에 두 객체가 들어 있습니다. 다음 노드가 주문별로 따로 실행되어야 한다면 배열을 아이템으로 펼치는 단계가 필요할 수 있습니다.

3. 고유 실습: 금액 합계 확인

Code 노드나 적절한 변환 노드를 사용해 두 주문의 합계가 20,000인지 확인합니다. 예를 들어 여러 아이템 형태라면 다음처럼 처리할 수 있습니다.

const total = items.reduce((sum, item) => {
  const amount = Number(item.json.amount);
  if (!Number.isFinite(amount)) {
    throw new Error('amount가 숫자가 아닙니다');
  }
  return sum + amount;
}, 0);

return [{json:{total}}];

실제 데이터에서는 "12,000원" 같은 문자열이 들어올 수 있으므로 무조건 Number()에 맡기지 말고 입력 형식을 먼저 정리합니다.

4. 디버깅 순서

  1. 노드 출력의 아이템 개수를 확인합니다.
  2. json 안의 실제 키 이름을 확인합니다.
  3. 배열인지 객체인지 확인합니다.
  4. 표현식이 첫 아이템만 보는지 전체 아이템을 보는지 확인합니다.
  5. 한 건짜리 테스트 데이터로 먼저 재현합니다.

표현식 참조가 헷갈리면 $json·item·first·all 차이, 반복과 병합은 반복·Merge 실습을 참고하세요.

댓글 남기기