WCF JSON - 不返回那些全部为null的字段

时间:2012-10-07 08:43:36

标签: json wcf

我必须通过这样的对象返回Json:

User={
    id:4,
    name:'Peter',
    nickname:null
}

所以我的C#对象看起来像:

class User {
    public int Id {get;set;} 
    public string name {get;set;} 
    public string nickname {get;set;} 
}

WCF自动将C#obkect转换为上面的Json。但是如果nickname为null,我怎么能告诉WCF根本不返回它,所以返回的JSOn将是

User={
    id:4,
    name:'Peter'
}

1 个答案:

答案 0 :(得分:4)

据我所知,WCF使用DataContractJsonSerializer将对象序列化为JSON。通常你会在那里注明一个带有DataMember属性的类,这些属性再次具有EmitDefaultValue属性(默认为true;请参阅docs here

  

获取或设置一个值,该值指定是否序列化默认值   正在序列化的字段或属性的值。

如果您执行以下操作,它可能会起作用:

[DataContract]
class User {

    [DataMember]
    public int Id {get;set;} 

    [DataMember]
    public string name {get;set;} 

    [DataMember(EmitDefaultValue=false)]
    public string nickname {get;set;} 
}

注意,我自己没试过。你必须检查,但听起来它可以工作。