Solution 1:
var jsonSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
var result = JsonConvert.DeserializeObject<T>(data, jsonSettings); // jsonSettings are explicitly supplied
Json.Net example to understand the above setting
void Main()
{
Test t = new Test
{
Str = null,
Val=1
};
var jsonSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
var json = JsonConvert.SerializeObject(t,jsonSettings);
json.Dump();
var result = JsonConvert.DeserializeObject<Test>(json, jsonSettings);
result.Dump();
}
public class Test
{
public string Str {get;set;}
public int Val {get; set;}
}
Results:

Explanation:
- Null Value Handling Json settings ignore the null value during serialization
- During Deserialization same value is introduced with null value
- Null value has to be of the fields not whole object, if whole object is null then there's no serialization, deserialization required, it can be pre-empted via logic
Solution 2:
return (finalResult != null) ? JsonConvert.DeserializeObject<T>(finalResult) : default(T)
My preference is Solution1
as it will handle null values internally at the Serializer library level