Something interesting awaits us in the Salesforce Winter ’23 Release!
If data transformation capabilities in Apex set your nerves on edge, you would love the new DataWeave in Apex feature. This feature uses Mulesoft’s DataWeave library to extract data from one format, transform it, and output it in a required format.
With DataWeave in Apex will be able to:
- parse and transform CSV data
- serialize Apex objects with custom date formats
- serialize and deserialize JSON with Apex reserved keywords
- do custom transformations to remove or add namespaces or remove __c suffixes
Where to find
Important: for now, the feature is in Developer Preview. It is available in scratch orgs where the DataWeaveInApex feature is enabled, in both Lightning Experience and Salesforce Classic experience.
How it works
You can create DataWeave scripts as metadata and invoke them directly from Apex.
Here is an example of how to transform an input CSV file into Contact SObjects:
// CSV data for Contacts\n String inputCsv = 'first_name,last_name,email\nCodey,"The Bear",codey@salesforce.com'; DataWeave.Script dwscript = DataWeave.Script.createScript('csvToContacts'); DataWeave.Result dwresult = dwscript.execute(new Map<String, Object>{'records' => inputCsv}); List<Contact> results = (List<Contact>)dwresult.getValue(); Assert.areEqual(1, results.size()); Contact codeyContact = results[0]; Assert.areEqual('Codey',codeyContact.FirstName); Assert.areEqual('The Bear',codeyContact.LastName);
The CSV data is transformed into objects with the DataWeave script csvToContacts.dwl.
%dw 2.0 input records application/csv output application/apex --- records map(record) -> { FirstName: record.first_name, LastName: record.last_name, Email: record.email } as Object {class: "Contact"}
We can’t wait for DataWeave in Apex to become generally available! Have you tested it already?