JSONJet Syntax Reference
This page provides a concise overview of JSONJet syntax. For detailed information about specific operators and statements, see the individual documentation pages:
- Statements: See the statements directory for detailed documentation of each statement type
- Operators: See the operators directory for detailed documentation of each operator
Table of Contents
- Program Structure
- Expressions
- Object and Array Literals
- Flow Definitions
- Operators
- Literals
- Identifiers
- Comments
Program Structure
A JSONJet program consists of one or more statements separated by semicolons:
statement1;
statement2;
statement3;
Statements are commands that perform actions in JSONJet. See the statements directory for detailed documentation of each statement type.
Expressions
Expression Precedence (highest to lowest)
- Unary expressions:
+expr
,-expr
- Function calls:
function(args)
- Object/Array literals:
{...}
,[...]
- Step variables:
step.variable
- Literals: strings, numbers, booleans, null
- Parenthesized expressions:
(expr)
- Arithmetic:
*
,/
,%
,+
,-
- Comparison:
==
,!=
,<
,>
,<=
,>=
- Logical:
&&
,||
- Ternary:
condition ? trueValue : falseValue
Expression Syntax
// Function calls
functionName(arg1, arg2, arg3)
// Step variables
stepName
stepName.variableName
// Ternary
condition ? trueValue : falseValue
// Logical
expr1 || expr2 || expr3
expr1 && expr2 && expr3
// Comparison
expr1 == expr2 // Equal
expr1 != expr2 // Not equal
expr1 < expr2 // Less than
expr1 > expr2 // Greater than
expr1 <= expr2 // Less than or equal
expr1 >= expr2 // Greater than or equal
// Arithmetic
expr1 + expr2 // Addition
expr1 - expr2 // Subtraction
expr1 * expr2 // Multiplication
expr1 / expr2 // Division
Object and Array Literals
Object Literals
{ } // Empty object
{ property1, property2 } // Shorthand properties
{ key1: value1, key2: value2 } // Key-value pairs
{ ...* } // Spread all properties
{ ...expression } // Spread from expression
{ ...*, -excludedField } // Include all except excluded
{ field1, field2, -field3 } // Include field1, field2, exclude field3
Array Literals
[ ] // Empty array
[ element1, element2, element3 ] // Array with elements
Flow Definitions
Flow Syntax
create flow flowName [ttl(duration)] as
source | operation1 | operation2 | ...
Window Definitions
window_name = window_type(parameters)
Operators
Logical Operators
&& // Logical AND
|| // Logical OR
Comparison Operators
== // Equal
!= // Not equal
< // Less than
> // Greater than
<= // Less than or equal
>= // Greater than or equal
Arithmetic Operators
+ // Addition
- // Subtraction
* // Multiplication
/ // Division
Special Operators
= // Assignment
=> // Arrow (used in scan steps)
| // Pipeline
... // Spread operator
? // Question mark (ternary)
Punctuation
, // Comma
; // Semicolon
: // Colon
. // Dot
( ) // Parentheses
{ } // Braces
[ ] // Brackets
Literals
String Literals
"string value"
'string value'
Number Literals
123
123.456
-123
-123.456
Boolean Literals
true
false
Null Literal
null
Duration Literals
"1s" // 1 second
"1m" // 1 minute
"1h" // 1 hour
"1d" // 1 day
"1w" // 1 week
Identifiers
Identifier Rules
- Start with letter, underscore, or dollar sign
- Can contain letters, digits, underscores
- Case sensitive
- Keywords can be used as identifiers in expressions
Keywords
Keywords are reserved words in JSONJet. They can be used as identifiers in expressions when needed.
Comments
Single-line Comments
// This is a comment
Comments start with //
and continue to the end of the line.