Retrieve Picklist Labels And Values Dynamically For Any Object And Field In Salesforce

You have the ability to craft a dynamic method for fetching picklist labels and values for any object and field in Salesforce. Below is a dynamic method that accepts the object API name and field API name as parameters:

public class PicklistUtils {
 
    public static List<Map<String, String>> getPicklistValues(String objectApiName, String fieldApiName) {
        List<Map<String, String>> picklistData = new List<Map<String, String>>();
         
        try {
            // Describe the object and field
            Schema.DescribeSObjectResult objectDescribe = Schema.getGlobalDescribe().get(objectApiName).getDescribe();
            Schema.DescribeFieldResult fieldDescribe = objectDescribe.fields.getMap().get(fieldApiName).getDescribe();
 
            // Check if the field is a picklist
            if (fieldDescribe.getType() == Schema.DisplayType.Picklist) {
                // Get the picklist values and labels
                List<Schema.PicklistEntry> picklistValues = fieldDescribe.getPicklistValues();
 
                // Iterate through the picklist values and labels
                for (Schema.PicklistEntry picklistEntry : picklistValues) {
                    Map<String, String> picklistItem = new Map<String, String>();
                    picklistItem.put('label', picklistEntry.getLabel());
                    picklistItem.put('value', picklistEntry.getValue());
                    picklistData.add(picklistItem);
                }
            }
        } catch (Exception e) {
            // Handle exceptions as needed
        }
         
        return picklistData;
    }
}

Now, you can invoke the method to obtain the value. For example:

String objectApiName = 'MyObject__c';
String fieldApiName = 'MyPicklist__c';
 
List<Map<String, String>> picklistValues = PicklistUtils.getPicklistValues(objectApiName, fieldApiName);
 
for (Map<String, String> picklistItem : picklistValues) {
    String label = picklistItem.get('label');
    String value = picklistItem.get('value');
     
    // Use label and value as needed
    System.debug('Label: ' + label + ', Value: ' + value);
}

Enjoy your learning journey!