jsonlogic-validator
8
总安装量
8
周安装量
#34812
全站排名
安装命令
npx skills add https://github.com/yonderlab/kota.agent.skills --skill jsonlogic-validator
Agent 安装分布
opencode
8
claude-code
8
github-copilot
8
codex
8
cursor
8
gemini-cli
7
Skill 文档
JSONLogic Validator
Implement and validate JSONLogic rulesâportable, JSON-serializable business logic that works across JavaScript, Python, PHP, Ruby, Go, Java, .Net, and C++.
Core Syntax
Every rule: { "operator": [arguments] }
{"==": [1, 1]} // comparison
{"var": "user.name"} // data access
{"and": [{">=": [{"var": "age"}, 18]}, {"var": "active"}]} // compound
Quick Reference
| Category | Operators |
|---|---|
| Data | var, missing, missing_some |
| Logic | if, ==, ===, !=, !==, !, !!, and, or |
| Numeric | >, >=, <, <=, +, -, *, /, %, max, min |
| Array | map, filter, reduce, all, some, none, merge, in |
| String | cat, substr, in |
Workflow
1. Gather Requirements
Clarify:
- What data fields are available?
- What conditions determine the outcome?
- What should the rule return (boolean, value, category)?
2. Write the Rule
Build incrementally from inner expressions outward:
// Requirement: "Premium users over 25 get 20% discount, others get 10%"
{
"if": [
{"and": [
{"==": [{"var": "tier"}, "premium"]},
{">": [{"var": "age"}, 25]}
]},
0.20,
0.10
]
}
3. Validate
Run the validation script (no dependencies required):
node scripts/validate-jsonlogic.js '<rule>' '<data>'
Example:
node scripts/validate-jsonlogic.js '{">=": [{"var": "age"}, 18]}' '{"age": 25}'
4. Test with Cases
Requires: npm install json-logic-js
node scripts/test-jsonlogic.js '<rule>' --test-cases '[
{"data": {"age": 25}, "expected": true},
{"data": {"age": 15}, "expected": false}
]'
Common Patterns
Null-safe access with default
{"var": ["user.name", "Guest"]}
Range check (between)
{"<=": [0, {"var": "value"}, 100]}
Multi-condition (all must pass)
{"and": [
{">=": [{"var": "age"}, 18]},
{"==": [{"var": "status"}, "active"]},
{"in": [{"var": "role"}, ["admin", "editor"]]}
]}
Grade/tier classification
{"if": [
{">=": [{"var": "score"}, 90]}, "A",
{">=": [{"var": "score"}, 80]}, "B",
{">=": [{"var": "score"}, 70]}, "C",
"F"
]}
Array operations
// Sum: reduce with +
{"reduce": [{"var": "items"}, {"+": [{"var": "accumulator"}, {"var": "current"}]}, 0]}
// Filter: keep matching
{"filter": [{"var": "items"}, {">": [{"var": ""}, 10]}]}
// Any match: some
{"some": [{"var": "items"}, {"==": [{"var": ".status"}, "error"]}]}
Truthy/Falsy (differs from JavaScript)
Falsy: 0, [], "", null
Truthy: Everything else (including "0" and [0])
Validation Checklist
Before deploying a rule:
- Valid JSON syntax
- All operators spelled correctly
- Arguments in arrays where required
- Data paths match actual data structure
- Edge cases handled (null, empty, missing keys)
- Tested with representative data samples
References
For complete operator documentation with all arguments and edge cases:
- See
references/jsonlogic-reference.md