Deserialize JSON String Objects with Extraneous Attributes

We’ve made improvements to the JSON deserialization process for String objects. Previously, if you passed attributes that weren’t present in your Apex type to the System.JSON and System.JSONParser classes’ deserialization methods, these methods threw a runtime exception. Runtime exceptions are now thrown for extraneous attributes only in some cases.
When you deserialize JSON Strings using JSON.deserialize, JSON.deserializeStrict, JSONParser.readValueAs, and JSONParser.readValueAsStrict, there are four possible outcomes.
When a method is invoked to deserialize a JSON String with extraneous attributes into an Apex class:
In strict mode (when calling the methods ending with Strict), an exception is thrown in all API versions.
In normal mode, no exception is thrown in any API version-.
When a method is invoked to deserialize a JSON String with extraneous attributes into a custom object or an sObject:
In strict mode (when calling the methods ending with Strict), no exception is thrown in any API version.
In normal mode, an exception is thrown in API version 34.0 and earlier. In API version 35.0 and later, no exception is thrown.