2009-06-05 76 views

回答

2

的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; 
} 
5

不具备[DataMember]属性的任何属性将不会被序列化

[DataContract] 
public class MyClass 
{ 
    [DataMember] 
    public string SerializeMe {get;set;} 

    public string DontSerializeMe {get;set;} 

    [DataMember] 
    public string SerializeMeToo {get;set;} 
} 
+0

我可以在运行时编程决定不序列化领域的“SerializeMe”? – sean 2009-06-06 00:34:04