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.