Every format you'll meet
JSON, XML, CSV, YAML, Protobuf, Avro, Parquet, flat file, COBOL copybook and EDI.
GoWeave gives you a DataWeave-style language. The Visual Mapper handles simple mappings without code.
A concise, expression-based language for JSON, XML and CSV, with functions such as map, filter, reduce, groupBy, orderBy, distinctBy, pluck, flatten, joinBy, splitBy and when/otherwise.
Existing DataWeave 2.0 scripts are converted to native code automatically, so your transformation logic survives migration.
How migration works%dw 2.0 output application/json --- payload.orders filter ((o) -> o.status == "SHIPPED") groupBy ((o) -> o.region) mapObject ((orders, region) -> { (region): { count: sizeOf(orders), total: orders reduce ((o, acc = 0) -> acc + o.amount), customers: orders distinctBy $.customer map $.customer } })
// GoWeave output json --- payload.orders | filter(o => o.status == "SHIPPED") | groupBy(o => o.region) | mapObject((orders, region) => { (region): { count: sizeOf(orders), total: orders | reduce((o, acc = 0) => acc + o.amount), customers: orders | distinctBy(o => o.customer) | pluck("customer") } })
{
"EMEA": {
"count": 2,
"total": 1840.5,
"customers": ["C-1001", "C-1042"]
},
"APAC": {
"count": 1,
"total": 615.0,
"customers": ["C-2007"]
}
}
Paste sample input, define input and output schemas, and watch the output update as you type.
// input (sample.json) { "first": "Ada", "last": "Lovelace", "tier": "gold" } // script { name: payload.first ++ " " ++ payload.last, vip: when payload.tier == "gold" then true otherwise false } // preview { "name": "Ada Lovelace", "vip": true }
Map fields between source and target with no scripting.
Ideal for straightforward mappings, and a quick way for new team members to get productive.
JSON, XML, CSV, YAML, Protobuf, Avro, Parquet, flat file, COBOL copybook and EDI.
XPath, XQuery, XSLT, JSONPath and JMESPath, plus JSON Schema, XSD and OpenAPI validation.
Mustache and parse-template support for generating documents and messages.
Read in one format, write in another, and validate along the way, all compiled into your Go microservice.
See GoWeave in a demo