using Newtonsoft.Json.Serialization;
public static void Main()
""Message1"": ""A message"",
Console.WriteLine("------------");
""Message1"": ""A message"",
private static MyParameters TryDeserialize(string json)
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ContractResolver = new NonNullablePropertiesRequiredResolver();
MyParameters parms = JsonConvert.DeserializeObject<MyParameters>(json, settings);
Console.WriteLine("Message1: " + (parms.Message1 ?? "(null)"));
Console.WriteLine("Message2: " + (parms.Message2 ?? "(null)"));
Console.WriteLine("MyInt: " + parms.MyInt);
Console.WriteLine("MyNullableInt: " + (parms.MyNullableInt.HasValue ? parms.MyNullableInt.Value.ToString() : "(null)"));
Console.WriteLine(ex.Message);
public class MyParameters
public string Message1 { get; set; }
public string Message2 { get; set; }
public int MyInt { get; set; }
public int? MyNullableInt { get; set; }
class NonNullablePropertiesRequiredResolver : DefaultContractResolver
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
JsonProperty prop = base.CreateProperty(member, memberSerialization);
Type propType = prop.PropertyType;
if (propType.IsValueType && !(propType.IsGenericType && propType.GetGenericTypeDefinition() == typeof(Nullable<>)))
prop.Required = Required.Always;