# ibm/jsonata4java architecture

> Architecture diagram of the GitHub repository ibm/jsonata4java, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ibm/jsonata4java
- Repository: https://github.com/ibm/jsonata4java

## Overview

JSONata4Java is a Java implementation of the JSONata JSON-query and transformation language. An embedding application supplies a parsed JSON value and expression to the API; the expression is parsed and evaluated against that input, with bindings and built-in functions available, to produce a JSON result. The repository also documents command-line and Swing tester workflows. The excerpts support the API/evaluation and path-expression relationships shown; the function catalog and other unsampled subsystems are represented without guessing their internal dispatch details.

Main entry points: [`src/main/java/com/api/jsonata4java/Expression.java`](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Expression.java) (Expression API), [`src/main/java/com/api/jsonata4java/expressions/ExpressionsVisitor.java`](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/ExpressionsVisitor.java) (Evaluation visitor), [`src/main/java/com/api/jsonata4java/expressions/path/PathExpression.java`](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/path/PathExpression.java) (Path expressions), [`src/main/java/com/api/jsonata4java/Tester.java`](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Tester.java) (CLI tester)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Embedding API"]
  node_expression["Expression API<br/>[Expression.java]"]
  node_binding["Bindings<br/>[Binding.java]"]
end

subgraph group_language["Expression Runtime"]
  node_expressions["Expression parsing<br/>[Expressions.java]"]
  node_visitor["Evaluation visitor"]
  node_environment["Frame environment"]
  node_sequence["Result sequences<br/>[Sequence.java]"]
  node_path["Path expressions"]
  node_pathvisitor["Path traversal"]
end

subgraph group_functions["Built-in Functions"]
  node_builtin["Function catalog"]
  node_signature["Signature checks<br/>[Signature.java]"]
  node_regex["Regex engine<br/>[RegexEngine.java]"]
end

subgraph group_tools["Interactive Testers"]
  node_tester["CLI tester<br/>[Tester.java]"]
  node_ui["Swing tester<br/>[TesterUI.java]"]
end

node_app(("Embedding application"))
node_input["JSON input"]
node_result["JSON result"]

node_app -->|"calls API"| node_expression
node_app -->|"supplies JSON"| node_input
node_expression -->|"parses expression"| node_expressions
node_expression -->|"evaluates tree"| node_visitor
node_expression -->|"accepts bindings"| node_binding
node_visitor -->|"uses variables"| node_environment
node_visitor -->|"evaluates functions"| node_builtin
node_visitor -->|"evaluates against"| node_input
node_path -->|"visits parsed path"| node_pathvisitor
node_expression -->|"returns JSON"| node_result
node_tester -->|"runs expressions"| node_expression
node_ui -->|"evaluates edits"| node_expression

click node_expression "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Expression.java"
click node_binding "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Binding.java"
click node_expressions "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/Expressions.java"
click node_visitor "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/ExpressionsVisitor.java"
click node_environment "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/FrameEnvironment.java"
click node_sequence "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Sequence.java"
click node_path "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/path/PathExpression.java"
click node_pathvisitor "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/path/PathExpressionVisitor.java"
click node_builtin "https://github.com/ibm/jsonata4java/tree/master/src/main/java/com/api/jsonata4java/expressions/functions"
click node_signature "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Signature.java"
click node_regex "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/regex/RegexEngine.java"
click node_tester "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Tester.java"
click node_ui "https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/testerui/TesterUI.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_expression,node_binding toneBlue
class node_expressions,node_visitor,node_environment,node_sequence,node_path,node_pathvisitor toneAmber
class node_builtin,node_signature,node_regex toneMint
class node_tester,node_ui toneRose
class node_app,node_input,node_result toneIndigo
```

## Components

### Embedding API

- [Expression API](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Expression.java): `src/main/java/com/api/jsonata4java/Expression.java`
- [Bindings](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Binding.java): `src/main/java/com/api/jsonata4java/Binding.java`

### Expression Runtime

- [Expression parsing](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/Expressions.java): `src/main/java/com/api/jsonata4java/expressions/Expressions.java`
- [Evaluation visitor](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/ExpressionsVisitor.java): `src/main/java/com/api/jsonata4java/expressions/ExpressionsVisitor.java`
- [Frame environment](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/FrameEnvironment.java): `src/main/java/com/api/jsonata4java/expressions/FrameEnvironment.java`
- [Result sequences](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Sequence.java): `src/main/java/com/api/jsonata4java/Sequence.java`
- [Path expressions](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/path/PathExpression.java): `src/main/java/com/api/jsonata4java/expressions/path/PathExpression.java`
- [Path traversal](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/path/PathExpressionVisitor.java): `src/main/java/com/api/jsonata4java/expressions/path/PathExpressionVisitor.java`

### Built-in Functions

- [Function catalog](https://github.com/ibm/jsonata4java/tree/master/src/main/java/com/api/jsonata4java/expressions/functions): `src/main/java/com/api/jsonata4java/expressions/functions`
- [Signature checks](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Signature.java): `src/main/java/com/api/jsonata4java/Signature.java`
- [Regex engine](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/expressions/regex/RegexEngine.java): `src/main/java/com/api/jsonata4java/expressions/regex/RegexEngine.java`

### Interactive Testers

- [CLI tester](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/Tester.java): `src/main/java/com/api/jsonata4java/Tester.java`
- [Swing tester](https://github.com/ibm/jsonata4java/blob/master/src/main/java/com/api/jsonata4java/testerui/TesterUI.java): `src/main/java/com/api/jsonata4java/testerui/TesterUI.java`

### Other components

- **Embedding application**
- **JSON input**
- **JSON result**

## Connections

- Embedding application → Expression API: calls API
- Embedding application → JSON input: supplies JSON
- Expression API → Expression parsing: parses expression
- Expression API → Evaluation visitor: evaluates tree
- Expression API → Bindings: accepts bindings
- Evaluation visitor → Frame environment: uses variables
- Evaluation visitor → Function catalog: evaluates functions
- Evaluation visitor → JSON input: evaluates against
- Path expressions → Path traversal: visits parsed path
- Expression API → JSON result: returns JSON
- CLI tester → Expression API: runs expressions
- Swing tester → Expression API: evaluates edits
