[SalesForce] How to convert JSON string into Map in apex

I want to convert string into Map so I can get key and values from it for example:

String fields = '[{"Title":"Name"},{"Product_type":"IsActive"}]';

convert into map and get the value

system('Value '+ map.get(Title));

system('Value '+ map.get(Product_type));

How to do this?

Best Answer

Just to add on @sfdcfox answer, you can still use JSON.deserializeUntyped but first you will need to convert to List<Object> to prevent the error Invalid conversion from runtime type List<ANY> to Map<String, ANY>

After converting to List, you can build the map as follows:

String fields = '[{"Title":"Name"},{"Product_type":"IsActive"}]';
Map<String, Object> valuesMap = new Map<String, Object>();

for(Object obj : (List<Object>)JSON.deserializeUntyped(fields)){
   //convert values to map
   Map<String, Object> data = (Map<String, Object>)obj;
   valuesMap.putAll(data );
}

System.debug(valuesMap.get('Title')); // 'Name';
System.debug(valuesMap.get('Product_type')); // 'IsActive';