Deserialize JSON to SObject

Well, this is how you can do it. Apex is made through Java!

String jsonText = '{"Data": {"attributes": {"type": "Contact","url":"/services/data/v35.0/sobjects/Contact/0036100000JUXKkAAP"},"Id": "0036100000JUXKkAAP","Description": "","LastName": "Testing"}}';

Map<String, Object> cObjMap = (Map<String, Object>) JSON.deserializeUntyped(jsonText);
String cObjJson = JSON.serialize(cObjMap.get('Data'));
// Why again :(
Map<String, Object> cObjMapFurious = (Map<String, Object>) JSON.deserializeUntyped(cObjJson);
String cObjJsonDrunk = JSON.serialize(cObjMapFurious);
try
{
    SObject customObject = (SObject)JSON.deserialize(cObjJsonDrunk, Sobject.class);
    System.debug(' Accomplished: '+customObject);
}
catch(Exception ex)
{
    System.debug(' @@@@@ Don\'t visible '+ex.getMessage());
}

Things must have changed signficantly in the past few years, because it's quite simple now from what I can see as of Winter '20. It's a 1 line task to deserialize. In this example, I'm deserializing an external object to use in a Unit Test Mock.

Part1 -- Serialize to a String.

User__x testExtUser = [select Id, ExternalId, Name__c, FederationIdentifier__c, IsActive__c from User__x limit 1];
String jsonString = Json.serialize(testExtUser);

Part 2 Deserialize - the example shows the actual Json contents as a string literal.

User__x fscTestUser = (User__x) JSON.deserialize('{"attributes":{"type":"User__x","url":"/services/data/v48.0/sobjects/User__x/0051I000002KgLPQA0"},"Id":"x0J1I000002KgLPUA0","Name__c":"John Smith","IsActive__c":true,"FederationIdentifier__c":"smi970","ExternalId":"0051I000002KgLPQA0"}', SObject.class);