14.6. 고급 JSONata 기능


JSONata를 사용하여 배열 처리 및 기본 제공 함수와 같은 고급 기능을 적용하여 이벤트를 보다 효과적으로 변환할 수 있습니다.

14.6.1. 배열 처리

JSONata를 사용하면 이벤트 페이로드에서 배열을 쉽게 사용할 수 있습니다. 항목을 계산하고 조건에 따라 필터링하고 집계 값을 계산할 수 있습니다.

주문에 있는 처리 항목의 예와 합계를 계산합니다.

{
  "specversion": "1.0",
  "id": id,
  "type": "order.processed",
  "source": source,
  "time": $now(),
  "itemcount": $count(order.items),
  "multiorder": $count(order.items) > 1,
  "data": {
    "order": order.id,
    "items": order.items[quantity > 1].{
      "product": name,
      "quantity": quantity,
      "lineTotal": price * quantity
    },
    "totalvalue": $sum(order.items.(price * quantity))
  }
}
Copy to Clipboard Toggle word wrap

이를 입력으로 사용할 수 있습니다.

{
  "id": "12345",
  "source": "https://example.com/orders",
  "order": {
    "id": "order-67890",
    "items": [
      { "name": "Laptop", "price": 1000, "quantity": 1 },
      { "name": "Mouse", "price": 50, "quantity": 2 },
      { "name": "Keyboard", "price": 80, "quantity": 3 }
    ]
  }
}
Copy to Clipboard Toggle word wrap

변환은 다음 출력을 생성합니다.

{
  "specversion": "1.0",
  "id": "12345",
  "type": "order.processed",
  "source": "https://example.com/orders",
  "time": "2025-03-03T09:13:23.753Z",
  "itemcount": 3,
  "multiorder": true,
  "data": {
    "order": "order-67890",
    "items": [
      { "product": "Mouse", "quantity": 2, "lineTotal": 100 },
      { "product": "Keyboard", "quantity": 3, "lineTotal": 240 }
    ],
    "totalvalue": 1340
  }
}
Copy to Clipboard Toggle word wrap

이 예제에서는 다음을 수행합니다.

  • $count(order.items) 는 배열에 있는 항목 수를 계산합니다.
  • 필터 [quantity > 1] 는 하나 이상의 수량을 가진 항목만 선택합니다.
  • $sum(order.items.( price * 수량)) 은 총 값을 계산합니다.

14.6.2. 기본 제공 함수 사용

JSONata에는 문자열, 숫자, 날짜 및 배열을 조작할 수 있는 다양한 기본 제공 함수가 포함되어 있습니다. 이러한 함수는 기존 데이터에서 파생된 새 필드를 사용하여 이벤트를 보강할 수 있습니다.

기본 제공 함수를 사용하여 메타데이터 추가 예

{
  "specversion": "1.0",
  "id": id,
  "type": "user.event",
  "source": source,
  "time": time,
  "timestamp": $now(),
  "username": $lowercase(data.user.name),
  "initials": $join($map($split(data.user.name, " "), function($v) { $substring($v, 0, 1) }), ""),
  "data": $
}
Copy to Clipboard Toggle word wrap

이 예제에서는 다음을 수행합니다.

  • $now() 는 현재 타임스탬프를 추가합니다.
  • $lowercase() 는 사용자 이름을 소문자로 변환합니다.
  • $split() 는 이름을 부분으로 분할하고, $map() 은 각각의 첫 글자를 추출하고, $join() 는 이를 초기값으로 결합합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat