【问题标题】:RESTful web service in c#c# 中的 RESTful Web 服务
【发布时间】:2018-02-13 12:10:20
【问题描述】:

我正在用 C# 构建一个 RESTful Web 服务。

所以我已经像这样构建了这个 DTo 模型:

namespace WebService.Models
{
    [DataContract(Name = "VitalSigns")]
    public class VitalSignsDTO
    {
        [DataMember(Name = "id", Order = 1)]
        public int id { get; set; }

        [DataMember(Name = "name", Order = 2)]
        public string name { get; set; }

        [DataMember(Name = "valore", Order = 3)]
        public string valore { get; set; }

        [DataMember(Name = "dataOra", Order = 3)]
        public DateTime? dataOra { get; set; }
    }
}

现在,这是 JSON 的响应:

{
    "id": 1,
    "name": "Altezza corporea",
    "valore": null,
    "dataOra": null
},
{
    "id": 2,
    "name": "Peso corporeo",
    "valore": null,
    "dataOra": null
}

现在我想知道,是否可以隐藏没有值的 valore 和 dataOra 字段。

【问题讨论】:

标签: c# web-services


【解决方案1】:

将[JsonIgnore] 属性用于您的属性。

namespace WebService.Models
{
    [DataContract(Name = "VitalSigns")]
    public class VitalSignsDTO
    {
        [DataMember(Name = "id", Order = 1)]
        public int id { get; set; }

        [DataMember(Name = "name", Order = 2)]
        public string name { get; set; }

        [JsonIgnore]
        [DataMember(Name = "valore", Order = 3)]
        public string valore { get; set; }

        [JsonIgnore]
        [DataMember(Name = "dataOra", Order = 3)]
        public DateTime? dataOra { get; set; }
    }
}

【讨论】:

  • 如果设置了dataOra,是否会包含在JSON中?
  • 不,不会的。
【解决方案2】:

如果你在.Net Core WebAPI中,可以在中间件(Startup.cs)中配置JSON Serializer。

   public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc()
                .AddJsonOptions(options => { options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; });
        services.AddAutoMapper();
        services.RegisterServices();
    }

如果您使用 ASP.NET WebAPI,请参考Suppress properties with null value on ASP.NET Web API

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多