redb.Route.JsonTransform
4.0.0
Prefix Reserved
dotnet add package redb.Route.JsonTransform --version 4.0.0
NuGet\Install-Package redb.Route.JsonTransform -Version 4.0.0
<PackageReference Include="redb.Route.JsonTransform" Version="4.0.0" />
<PackageVersion Include="redb.Route.JsonTransform" Version="4.0.0" />
<PackageReference Include="redb.Route.JsonTransform" />
paket add redb.Route.JsonTransform --version 4.0.0
#r "nuget: redb.Route.JsonTransform, 4.0.0"
#:package redb.Route.JsonTransform@4.0.0
#addin nuget:?package=redb.Route.JsonTransform&version=4.0.0
#tool nuget:?package=redb.Route.JsonTransform&version=4.0.0
redb.Route.JsonTransform
Declarative JSON-to-JSON transformation with JSONata — the analog of Camel's
jslt / jolt / jsonata components — on the native .NET engine
Jsonata.Net.Native (no JavaScript, no JVM).
Field-to-field mapping with renaming, nesting, array unwrapping and defaults, without writing a
template for the whole document.
.TransformJson("Transforms/order-to-shipment.jsonata") // file, compiled once, cached
.TransformJson(TextSource.Inline("""
{ "id": orderId, "to": { "city": address.city }, "skus": items.sku, "tenant": $headers.tenant }
"""))
.TransformJson("Transforms/x.jsonata", JsonTransformOutput.Node) // JsonNode body instead of text
| Rule | Why |
|---|---|
A string argument is a locator (file relative to JsonTransformOptions.BaseDirectory, default AppContext.BaseDirectory, or assembly:Name/Path/file.jsonata); inline text is TextSource.Inline("..."). |
A string never has to be guessed as "path or text" — the same rule as templates and the expression language. |
| Compiled at route build. | A missing file or a syntax error fails Start() with the specification name and the engine's message. |
Input: the body as JSON text, byte[], Stream, a System.Text.Json tree, or a POCO (serialized camelCase). |
The step sits naturally after Unmarshal or straight after an HTTP consumer. |
$headers and $properties are bound in the specification. |
The same names the payload templates use. |
Output: JSON text with ContentType = application/json (default; Indent option), or a JsonNode (JsonTransformOutput.Node). |
An undefined result leaves a null body. |
Options: services.AddJsonTransform(o => ...) or context.UseJsonTransform(o => ...) — BaseDirectory, Indent.
XML form (the node's shape in the Route-XML catalog; the XML loader itself is not shipped yet):
<transformJson spec="transforms/order-to-shipment.jsonata"/> or the specification as the element's text (CDATA); output="string|node".
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Jsonata.Net.Native (>= 3.0.0)
- Jsonata.Net.Native.SystemTextJson (>= 3.0.0)
- redb.Route (>= 4.0.0)
- redb.Route.Xml (>= 4.0.0)
-
net8.0
- Jsonata.Net.Native (>= 3.0.0)
- Jsonata.Net.Native.SystemTextJson (>= 3.0.0)
- redb.Route (>= 4.0.0)
- redb.Route.Xml (>= 4.0.0)
-
net9.0
- Jsonata.Net.Native (>= 3.0.0)
- Jsonata.Net.Native.SystemTextJson (>= 3.0.0)
- redb.Route (>= 4.0.0)
- redb.Route.Xml (>= 4.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.0.0 | 42 | 9/11/2026 |