Deserializacja za pomocą Json.NET: Wymaganie obecności właściwości / klucza

Podczas używaniaJson.NET aby deserializować łańcuch JSON do obiektu, jak mogę wymagać, aby klucz / właściwość była obecna w JSON stirng, ale zezwalam na wartości NULL?

Na przykład:

Powiedzmy, że mam klasę / obiekt ...

[DataContract]
public class Car
{
    [DataMember(IsRequired = true)]
    public string Vin {get; set;}

    [DataMember(IsRequired = true)]
    public string Color {get; set;}

    public string Description {get; ;set}
}

W powyższym przykładzie VIN i kolor są wymagane, a wyjątek zostałby zgłoszony, jeśli którykolwiek z nich brakuje w ciągu JSON. Ale powiedzmy, że to, czy właściwość Opis ma wartość po deserializacji, jest opcjonalne. Innymi słowy NULL jest poprawną wartością. Istnieją dwa sposoby, aby to się stało w ciągu JSON:

1)

{
    "vin": "blahblahblah7",
    "color": "blue",
    "description":  null
}

lub 2)

{
    "vin": "blahblahblah7",
    "color": "blue"
}

Problem polega na tym, że nie chcę zakładać, że wartość Opis powinna mieć wartość NULL tylko dlatego, że para klucz / wartość została pominięta w łańcuchu JSON. Chcę, aby nadawca JSON był wyraźnie nastawiony na NULL. Jeśli miałby się zdarzyć scenariusz nr 2, chcę go wykryć i odpowiedzieć komunikatem o błędzie. Jak więc wymagać obecności pary klucz / wartość, ale zaakceptować wartość NULL jako wartość?

Jeśli to pomaga, próbuję rozwiązać ten problem w kontekścieASP.NET Web API projekt.

questionAnswers(3)

yourAnswerToTheQuestion