【发布时间】:2009-06-05 06:35:44
【问题描述】:
在将对象序列化为 JSON 字符串时,是否可以在运行时排除指定字段?即序列化对象时,仅序列化列表中指定的字段。
【问题讨论】:
标签: c# json serialization
在将对象序列化为 JSON 字符串时,是否可以在运行时排除指定字段?即序列化对象时,仅序列化列表中指定的字段。
【问题讨论】:
标签: c# json serialization
任何没有[DataMember] 属性的属性都不会被序列化
[DataContract]
public class MyClass
{
[DataMember]
public string SerializeMe {get;set;}
public string DontSerializeMe {get;set;}
[DataMember]
public string SerializeMeToo {get;set;}
}
【讨论】:
DataContractJsonSerializer 是可选的,因此仅包含标有 DataMemberAttribute 的字段。
我想在运行时更改此设置(如根据某些条件以编程方式排除某些字段)以排除为空但这是默认行为的字段。所以我想它不再相关了。
更新,也可以使用下面的:
public DateTime DateOfBirth;
[DataMember] public bool Confidential;
[DataMember (Name="DateOfBirth", EmitDefaultValue=false)]
DateTime? _tempDateOfBirth;
[OnSerializing]
void PrepareForSerialization (StreamingContext sc)
{
if (Confidential)
_tempDateOfBirth = DateOfBirth;
else
_tempDateOfBirth = null;
}
【讨论】: