• Skip to primary navigation
  • Skip to main content

IoTmaker

사물인터넷에 대한 모든 것 여기서 해결하셔요!

  • 홈
  • 책:마이크로파이썬을 활용한 사물인터넷
  • 책:따라 하면서 배우는 사물인터넷
  • 온라인 교육 코스
  • 새로운 소식
  • 의견보내기
  • 내 수강정보
  • 로그인
  • 회원가입

AI 프롬프트 활용 11-2: Node-RED에 내장된 JSONata의 연산자

마이크로파이썬 > AI 프롬프트

프롬프트

file: 활용-11-2-Node-RED에 내장된 JSONata의 연산자.md

  프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.
Node-RED에 내장된 JSONata의 연산자에 대해 설명해 줘.

AI가 만든 결과

Node-RED에 내장된 JSONata는 JSON 데이터를 간결하게 탐색·변환하기 위해 설계된 표현 언어(Expression Language)입니다. 여러 가지 연산자를 제공하여, 숫자·문자열·논리 연산부터 조건 처리까지 직관적으로 작성할 수 있습니다. 아래는 JSONata에서 자주 사용하는 주요 연산자와 그 특징을 정리한 내용입니다.


1. 산술 연산자 (Arithmetic Operators)

연산자설명예시결과
+두 피연산자를 더함3 + 47
-두 피연산자를 뺌 (또는 단항 음수 표시)10 - 37
*두 피연산자를 곱함2 * 36
/앞 피연산자를 뒤 피연산자로 나눔10 / 52
%나머지(Modulus) 연산10 % 31
  • JSONata 표현식에서 숫자 타입끼리 연산할 수 있으며, 어떤 경우에는 오류 혹은 null이 반환될 수 있으므로 주의합니다.
  • - 연산자는 단항 음수를 표시할 때도 사용합니다.
    예: -5 (음수 5)

2. 비교 연산자 (Comparison Operators)

연산자설명예시결과
=두 값이 같은지 비교 (동등성)"Alice" = "Alice"true
!=두 값이 다른지 비교"Alice" != "Bob"true
<, >두 값(숫자, 문자열 등)을 비교5 < 10true
<=, >=작거나 같다, 크거나 같다 비교5 <= 5true
  • 문자열 비교 시 사전순으로 비교되며, 숫자 비교 시 일반적인 수치 비교가 이루어집니다.
  • JSONata에서는 ==, === 같은 구분은 없고, = 하나만으로 동등성을 표현합니다.

3. 논리 연산자 (Logical Operators)

연산자설명예시결과
and두 조건이 모두 참(true)인지(5 < 10) and truetrue
or두 조건 중 하나라도 참(true)인지(5 < 10) or falsetrue
not조건이 거짓(false)인지not falsetrue
  • and와 or는 단락 평가(short-circuit evaluation)를 합니다.
    예: (false and (1/0)) → 첫 항이 false이면 전체가 false로 확정되므로 뒤 연산은 실행되지 않을 수 있음.

4. 조건(삼항) 연산자 (Conditional / Ternary Operator)

JSONata는 if ... then ... else 구문을 지원하며, 그와 유사하게 삼항(ternary) 형태의 조건 표현도 가능합니다.

  • if-then-else 구문:
    if (age >= 30) then
    "장년"
    else
    "청년"
  • 삼항 연산자:
    age >= 30 ? "장년" : "청년"

두 가지 방식 모두 동일한 결과를 도출하며, 취향 및 상황에 맞게 선택해서 사용합니다.


5. 문자열 결합 연산자 (&)

JSONata에서는 & 기호를 사용해 문자열을 이어 붙일(concatenate) 수 있습니다.

"Hello " & "World"   // 결과: "Hello World"
  • 숫자를 문자열과 결합해야 할 경우, 자동으로 문자열로 변환됩니다.
  • 예) name & "의 나이는 " & age & "살 입니다."

6. 범위·필터 표현 (경로 연산과 혼합)

JSONata의 핵심인 경로(Path) 표현에 포함되는 연산도 있습니다.

  • 배열 슬라이싱 / 범위: [start..end]
    • 예) numbers[1..3] → 인덱스 1부터 3까지 추출
  • 조건 필터: [ ... ] 내부에 조건식을 넣어, 해당 배열의 요소를 필터링
    • 예) users[age >= 30] → age 필드가 30 이상인 요소만 골라내기

엄밀히 말하면 전형적인 “연산자”는 아니지만, JSONata의 문법에서 대괄호([]) 안에 조건을 작성하는 방식을 자주 쓰므로, 연산자와 결합하여 필터링 로직을 작성하게 됩니다.


7. 그 밖의 주의사항

  1. in 연산자

    • JSONata 공식 문서에는 in 연산자가 있어, 어떤 값이 배열(또는 객체의 키 등)에 포함되어 있는지 확인하는 기능을 합니다.
    • 예) "Alice" in ["Alice", "Bob"] → true
    • Node-RED 내장 JSONata 버전에 따라 사용 여부가 다를 수 있으니 주의합니다.
  2. 연산자 우선순위

    • 일반적인 수학 규칙과 비슷하게 *, /, %가 +, -보다 우선 실행됩니다.
    • and, or는 비교 연산보다 뒤에 평가됩니다.
    • 복잡할 경우 괄호를 사용해 명시적인 우선순위를 지정하는 것이 좋습니다.
  3. 에러 처리

    • 잘못된 타입끼리 연산하거나, 배열 인덱스 범위를 벗어나는 경우 null 또는 오류가 반환될 수 있습니다.
    • Node-RED의 디버그 노드 등을 통해 결과를 확인하며 식을 작성하는 것이 좋습니다.

정리

  • 산술 연산자(+, -, *, /, %)로 숫자 계산 가능
  • 비교 연산자(=, !=, <, <=, >, >=)로 동등성·크기 비교 가능
  • 논리 연산자(and, or, not)로 복합 조건 처리
  • 조건(삼항) 연산자(if-then-else 또는 ? :)로 분기 로직 작성
  • 문자열 결합(&)으로 간단히 문자열 이어 붙이기
  • 필터([...]), 범위(start..end) 등의 문법과 조합해 JSON 데이터를 효율적으로 탐색 및 변환

이와 같은 연산자를 이해하면, Node-RED에서 JSONata를 활용해 메시지(payload) 처리를 훨씬 유연하고 강력하게 할 수 있습니다. 자주 쓰이는 연산자들을 익혀 두면, 복잡한 데이터도 간단히 가공·필터링하는 로직을 작성할 수 있습니다.

Copyright © 2025 ·로그인