2

我必须通过 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。但是如果昵称为空,我怎么能告诉 WCF 根本不返回它,所以返回的 JSOn 将是

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

1 回答 1

4

据我所知,WCF 使用 DataContractJsonSerializer 将对象序列化为 JSON。通常你有一个用DataMember属性注释的类,它又具有一个EmitDefaultValue属性(默认是true;请参阅此处的文档

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

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

[DataContract]
class User {

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

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

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

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

于 2012-10-07T08:52:42.017 回答