Json.NETを使用して JSON 文字列をオブジェクトに逆シリアル化する場合、JSON スターリングにキー/プロパティが存在するように要求し、NULL 値を許可するにはどうすればよいですか?
例えば:
クラス/オブジェクトがあるとしましょう...
[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}
}
上記の例では、VIN と Color が必須であり、いずれかが JSON 文字列にない場合、例外がスローされます。ただし、逆シリアル化された後に Description プロパティに値があるかどうかはオプションです。つまり、NULL は有効な値です。JSON 文字列でこれを行うには、次の 2 つの方法があります。
1)
{
"vin": "blahblahblah7",
"color": "blue",
"description": null
}
または 2)
{
"vin": "blahblahblah7",
"color": "blue"
}
問題は、説明のキーと値のペアが JSON 文字列に含まれていないという理由だけで、説明の値が NULL であると想定したくないことです。JSON の送信者に、NULL に設定することを明示してもらいたい。シナリオ 2 が発生した場合は、それを検出してエラー メッセージで応答したいと考えています。では、キーと値のペアが存在することを要求し、値として NULL を受け入れるにはどうすればよいでしょうか?
少しでも役立つ場合は、ASP.NET Web APIプロジェクトのコンテキスト内でこの問題を解決しようとしています。