如何在Web API中返回响应时隐藏模型的各个部分?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Web API中返回响应时隐藏模型的各个部分?相关的知识,希望对你有一定的参考价值。
我有这个响应类:
public class Response
{
public bool isSuccess { get; set; }
public string source { get; set; }
public string number { get; set; }
public string message { get; set; }
}
如果响应成功,我想只返回issuccess,source,number和not message。但是当它失败时我只想返回issuccess和消息。这可能吗?是否有一个属性标记,可以在值为null / empty时隐藏对象?
答案
要一直忽略,你可以使用[ScriptIgnore]
,如果你使用System.Web.Script.Serialization
为Json.Net
你可以使用属性[JsonIgnore]
对于条件属性序列化,您可以使用大多数Serializer接受的ShouldSerialize{PropertyName}
。
您可以像下面这样编写模型。
public class Response
{
public bool isSuccess { get; set; }
public string source { get; set; }
public string number { get; set; }
public string message { get; set; }
public bool ShouldSerializemessage()
{
return (!isSuccess);
}
public bool ShouldSerializesource()
{
return (isSuccess);
}
public bool ShouldSerializenumber()
{
return (isSuccess);
}
}
另一答案
您可以在模型上使用DataContract / Datamember。
[DataContract]
public class Response
{
[DataMember(Name = "isSuccess")]
public bool IsSuccess { get; set; }
[DataMember(EmitDefaultValue = false, Name = "source")]
public string Source { get; set; }
[DataMember(EmitDefaultValue = false, Name = "number")]
public string Number { get; set; }
[DataMember(EmitDefaultValue = false, Name = "message")]
public string Message { get; set; }
}
填充模型后,请确保根据您的条件,不需要的属性为默认值。在这种情况下,字符串为空。
附加优势:使用数据合同还可以让您遵循C#命名标准,同时保持JSON按预期出现。在上面的代码中说明
以上是关于如何在Web API中返回响应时隐藏模型的各个部分?的主要内容,如果未能解决你的问题,请参考以下文章