我是WCF的新手,正在寻找有关特定问题的建议。我正在使用Enitity Framework,并希望通过WCF将我的实体作为JSON返回。但是我只想在某些情况下返回某些信息。例如,在一种方法中,我可能想要返回用户用户名及其用户ID,在另一个实例中,我想要返回用户用户名,用户ID和电话号码。最初我想也许我可以返回一个匿名类型,如
var obj = new { username = user.UserName, userid = user.UserId };
但经过研究,我发现这不是一个好主意。然后我想到返回键值的字典,该方法的问题是返回的JSON:
{"key":"username","Value":"Andrew"}
我正在追求
的内容{"username":"Andrew"}
我也有自己的类型。有没有办法排除属性?即如果我的类型有财产电话,我可以在某些情况下将其排除吗?
非常感谢任何帮助/建议
答案 0 :(得分:0)
我知道在DataContractSerializer中,您可以使用EmitDefaultValue,例如,您可以拥有一个名为UserInfo的合约
[DataContract]
public class UserInfo
{
[DataMember]
public string UserID { get; set; }
[DataMember]
public string UserName { get; set; }
[DataMember(EmitDefaultValue=false)]
public int Age { get; set; }
[DataMember(EmitDefaultValue=false)]
public DateTime Time { get; set; }
}
我不知道JSON序列化程序是否支持EmitDefaultValue,您可以自己尝试吗?