Reference Guide
Complete syntax reference, troubleshooting guide, and quick-lookup tables for JSON Path mapping.Quick Syntax Reference
Core Operators
QuivaWorks-Specific Extensions
The pipe operator (
|) is a QuivaWorks custom extension not found in standard JSONPath implementations.Array Operations
Array Access Methods
- Index Access
- Slicing
- Wildcards
- Array Properties
Filter Expressions
Filter Syntax Patterns
Basic Filters
Basic Filters
Numeric Comparisons
Numeric Comparisons
Logical Operators
Logical Operators
String Matching
String Matching
Null & Undefined
Null & Undefined
Filter Expression Variables
Special Variables Reference
Special Functions
- Aggregation
- Type Selectors
- Context Access
Comparison Operators
Complete Operator Table
Operator Precedence
From highest to lowest priority:- Grouping:
() - Property Access:
.,[] - Logical NOT:
! - Comparison:
<,>,<=,>= - Equality:
===,!==,==,!= - Logical AND:
&& - Logical OR:
||
Common Patterns Quick Reference
Pattern Library
Basic Property Access
Array Operations
Concatenation
Filtering
Deep Scanning
Wildcards
Complex Filters
Combining Patterns
Troubleshooting Guide
Common Errors & Solutions
❌ Undefined or Empty Result
❌ Undefined or Empty Result
Symptoms: Path returns Case SensitivityArray Index Out of BoundsProperty Doesn’t ExistSolutions: Verify node ID matches exactly in flow, check property names in Flow Debugger, test with simpler paths and build up, and use
undefined, filter returns empty array [], or property seems to exist but isn’t found.Common Causes:Incorrect Node ID.length to check array sizes.❌ Filter Not Working
❌ Filter Not Working
Symptoms: Filter returns wrong items, filter returns nothing, or comparison seems correct but fails.Common Causes:Using Missing Quotes on StringsWrong Comparison TypeForgetting Solutions: Always use
= Instead of ===@ in Filter=== for equality (not =), quote string values in comparisons, use @ to reference current node, and check data types match in comparisons.❌ Type Mismatch Errors
❌ Type Mismatch Errors
Symptoms: Comparison fails unexpectedly, filter returns empty when data exists, or inconsistent results.Common Causes:String vs NumberBoolean as StringNull vs UndefinedSolutions: Check source data types in debugger, use loose equality
== if types vary, and convert types in earlier flow nodes if needed.❌ Pipe Operator Issues
❌ Pipe Operator Issues
Symptoms: Pipe concatenation not working, literal Empty/Undefined ValuesWrong Pipe TypeSolutions: Remove spaces around pipes, check all referenced values exist, and remember that
| appears in output, or parts missing from concatenated string.Common Causes:Spaces Around Pipe| is a QuivaWorks custom extension (not standard JSONPath).❌ Performance Issues
❌ Performance Issues
Symptoms: Slow flow execution, timeouts on large datasets, or high memory usage.Common Causes:Deep Scan on Large DataMultiple FiltersUnnecessary WildcardsSolutions: Use specific paths instead of deep scan, combine filter conditions, limit array slicing ranges, and process data in smaller batches if possible.
❌ Special Characters in Property Names
❌ Special Characters in Property Names
Symptoms: Properties with special characters not accessible, syntax errors with property names, or unexpected undefined results.Common Causes:Spaces in Property NamesHyphens/DashesSpecial CharactersNumeric-Starting NamesSolutions: Use bracket notation
['property'] for special characters, spaces, hyphens, @, $, etc., and for properties that start with numbers.Error Messages Reference
Common Error Messages
Best Practices
Do’s and Don’ts
- ✅ Do
- ❌ Don't
- ⚡ Performance
- 🔒 Security
Do These Things:✅ Use specific paths when possible:
$.NODE.user.name✅ Use triple equals in filters: ?(@.status==='active')✅ Quote strings in filters: ?(@.type==='premium')✅ Check array length before accessing: $.items.length✅ Use bracket notation for special characters: ['user-id']✅ Combine filters with && and ||: ?(@.a && @.b)✅ Use meaningful node IDs in flows for clarity✅ Test paths with Flow Debugger before deploying✅ Use array slicing for pagination: [0:10]✅ Validate data structures in earlier nodes when possibleTesting Strategies
How to Test Your Paths
1
Start Simple
Begin with basic property access and verify it works:
2
Add Complexity Gradually
Add one feature at a time (arrays, then filters):
3
Use Flow Debugger
Test each path in the Flow Debugger to see actual results before deploying.
4
Test Edge Cases
Test with empty arrays
[], missing properties undefined, null values null, and different data types.5
Verify Output Format
Check if you need an array
[...] or single value, and adjust accordingly:Migration from Other Systems
From Zapier
From Make (Integromat)
From n8n
Key Difference: QuivaWorks uses standard JSONPath syntax with custom extensions, making it more powerful for complex data transformations.
Keyboard Shortcuts & Tips
Flow Builder Shortcuts
Debugging Tips
Start Small
Test basic path first, then add complexity one step at a time.
Use Console
Test JSONPath expressions in browser console with sample data.
Check Types
Use
typeof or Flow Debugger to verify data types before filtering.Log Intermediate Results
Create intermediate nodes to see transformation steps.
Next Steps
Examples
See real-world usage examples
Advanced Techniques
Learn power user strategies
Filters & Expressions
Deep dive into filtering
Basic Syntax
Review the fundamentals
Quick Reference Card
Print-Friendly Quick Reference
Print-Friendly Quick Reference
JSONPath Cheat Sheet
Basic Syntax:$.NODE.property- Access property$.NODE.array[0]- Array index$.NODE.array[*]- All items$.NODE.array[0:3]- Slice (first 3)$.NODE.array[-1]- Last item$.NODE.array.length- Array length
$.NODE[?(@.property)]- Exists$.NODE[?(@.x===value)]- Equals$.NODE[?(@.x>10)]- Greater than$.NODE[?(@.a && @.b)]- AND$.NODE[?(@.a || @.b)]- OR
Text|$.NODE.value- Concatenate$.NODE.first| |$.NODE.last- With space$.a|, |$.b|, |$.c- Multiple pipes
$.NODE[?(@.active)][0]- First active item$.NODE[*].property- All properties$.NODE[?(@.price<100)].length- Count filtered
- Use
===not= - Quote strings in filters
- Always use
@in filters - Array indexes start at 0
- Negative indexes from end