【发布时间】:2016-06-23 15:20:52
【问题描述】:
我有一个如下所示的自定义类:
public class PartnerLoginOptions
{
public string Username { get; set; }
public string Password { get; set; }
public string DeviceModel { get; set; }
public string Version { get; set; }
public bool? IncludeUrls { get; set; }
public bool? ReturnDeviceType { get; set; }
public bool? ReturnUpdatePromptVersions { get; set; }
}
我想在序列化时忽略任何具有默认值的bool? 成员,但保留具有空值的字符串。例如,如果我有这样的对象
var options = new PartnerLoginOptions
{
Username = null,
Password = "123",
IncludeUrls = null,
ReturnDeviceType = true
};
然后序列化将导致:
{
"username": null,
"password": "123",
"deviceModel": null,
"version": null,
"returnDeviceType": true
}
这是我目前的代码:
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
DefaultValueHandling = DefaultValueHandling.Ignore // this applies to strings too, not just bool?
};
return JsonConvert.SerializeObject(options, settings);
有没有办法做到这一点而不用[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] 单独标记每个OptionalBool 属性?谢谢。
【问题讨论】:
标签: c# .net json serialization json.net