爲了序列化自定義類,我使用Newtonsoft.Json
,並且我有一個問題,該庫如何處理雙精度值的缺省值。JsonConvert.SerializeObject中的默認雙值處理
類可以像:
class Person
{
public string FullName { get; set; }
public double Score {get; set; }
public bool IsStudent {get; set; }
public double Weight {get;set; }
}
FullName
哪裏和Score
需要字段和IsStudent
是一個可選字段。
如果序列化對象:
Person mark = new Person();
mark.FullName = "Mark Twain";
mark.Score = 0.0;
var jsonMark = JsonConvert.SerializeObject(mark);
什麼,我得到的是
{
"FullName": "Mark Twain";
}
因爲0.0表示爲double
默認。
我需要始終傳遞該值,如果它是0.0
。如果我用JsonSerializerSettings
var settings = new JsonSerializerSettings();
settings.DefaultValueHandling = DefaultValueHandling.Include;
var jsonMark = JsonConvert.SerializeObject(mark);
連載我得到
{
"FullName": "Mark Twain",
"Score": 0.0,
"IsStudent": false,
"Weight": 0.0
}
因此所有屬性(在本演示IsStudent
和Weight
),我沒有設置。在我的原始代碼中,該類包含其他double
和boolean
字段,並且API不需要包含它們(如果我通過Weight
等於0不是正確的值)。
有一種方法來改變序列化的行爲,只包括特定領域(對我來說只是Score
但不IsStudent
和Weight
),或至少僅在特定類型(double
但不bool
)?
謝謝!我添加了裝飾器到特定屬性,現在序列化也可以在值爲0.0時使用 –
@GuidoPreite您好,非常感謝您的幫助。 –