Apex that uses Dataweave to transform a list into a map indexed by a field

PHOTO EMBED

Fri Jul 19 2024 21:52:09 GMT+0000 (Coordinated Universal Time)

Saved by @taurenhunter

List<Account> accountList = [
    SELECT Id, Name, AccountNumber 
    FROM Account 
    WHERE Name LIKE 'Test Account - %' 
        AND AccountNumber != NULL
    LIMIT 5
];

Map<String, Object> paramMap = 
    new Map<String, Object>{ 'records' => JSON.serialize( accountList )
                        , 'fieldName' => 'AccountNumber' };
DataWeave.Script dwScript = 
    DataWeave.Script.createScript( 'ListToMap' );
DataWeave.Result result = dwScript.execute( paramMap );

String resultString = result.getValueAsString();
// system.debug( resultString );

Map<String, SObject> objMap = (Map<String, SObject>)
    JSON.deserialize( resultString, Map<String, SObject>.class );

system.debug( objMap );
system.debug( objMap.get( '1' ) );
system.debug( objMap.get( '101' ) );
content_copyCOPY