我使用Newtonsoft.Json.JsonConvert
将Textbox
(WinForms)序列化为json,我希望序列化能够使用默认值或空数组跳过属性。
我试图在NullValueHandling = NullValueHandling.Ignore
中使用JsonSerializerSettings
,但似乎并没有影响任何事情。
以下是完整的代码示例(简化):
JsonSerializerSettings settings = new JsonSerializerSettings()
{
Formatting = Formatting.None,
DefaultValueHandling = DefaultValueHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
ObjectCreationHandling = ObjectCreationHandling.Replace,
PreserveReferencesHandling = PreserveReferencesHandling.None,
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor,
};
string json = JsonConvert.SerializeObject(textbox, settings);
有什么想法吗?
答案 0 :(得分:6)
您可以使用标准的条件序列化模式:
private int bar = 6; // default value of 6
public int Bar { get { return bar;} set { bar = value;}}
public bool ShouldSerializeBar()
{
return Bar != 6;
}
密钥是public bool ShouldSerialize*()
方法,其中*
是成员名称。 XmlSerializer
,protobuf-net,PropertyDescriptor
等也使用此模式。
这当然意味着您需要访问该类型。