[英]Only Ignore nulls on deserialization in Json.Net
當我有以下型號時:
public class Customer
{
public Customer()
{
FirstName = string.Empty;
LastName = string.Empty;
}
[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
public string FirstName {get;set;}
[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
public string LastName {get;set;}
}
這對我發布數據非常有用:
// {
// firstName: null,
// lastName: null
// }
public int Post([FromBody]Customer customer)
{
var firstName = customer.FirstName; // <-- value is ""
}
這樣做的問題是,如果開發人員忘記在這個系統中初始化數據,那么響應結構會將其遺漏:
public Customer
{
FirstName = "";
}
// {
// firstName: ''
// }
基本上,我不希望值為null,但我也不希望要求用戶在請求中添加可選參數。 我不能使用[Require]
因為它不滿足第二部分。
如何設置現在開發人員有責任初始化屬性,否則將被省略。 有沒有辦法實現這一點,以便它只忽略反序列化而不是序列化?
如果我可以改寫你的問題,你似乎在問:如果在反序列化JSON時或在應用程序代碼中未初始化時,即使設置為null
, 我怎么能擁有一個總是有一個默認的非null值的屬性? 如果這個改述是正確的,那么可以通過使用顯式而不是自動屬性來處理類型本身:
public class Customer
{
string firstName = "";
string lastName = "";
public Customer() { }
public string FirstName { get { return firstName; } set { firstName = value ?? ""; } }
public string LastName { get { return lastName; } set { lastName = value ?? ""; } }
}
無論Customer
類是如何構造的, FirstName
和LastName
現在都保證為非null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.