WebAPI 2.2 JSONFormatter包含响应中的NULL值

时间:2015-05-28 15:25:40

标签: json json.net asp.net-web-api2

我正在尝试获取WebAPI 2.2服务的JSONFormatter以从序列化JSON中删除NULL值字段。尝试在网络上找到的解决方案很少,但响应仍然包含NULL值。

首先我尝试了:

        config.Formatters.JsonFormatter.SerializerSettings 
          = new Newtonsoft.Json.JsonSerializerSettings
            {
               NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore
            };

然后我尝试完全替换JSONFormatter。

            var jsonformatter = new JsonMediaTypeFormatter
            {
                SerializerSettings =
                {
                    DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Ignore,
                    NullValueHandling = NullValueHandling.Ignore
                }
            };

            config.Formatters.RemoveAt(0);
            config.Formatters.Insert(0, jsonformatter);

这些方法都没有奏效。我仍然在生成的JSON响应中看到Null值属性。

这些是在WebApiConfig.Register(config)方法的开头完成的。

API返回的类是从EF生成的,采用以下格式:

public partial class Entity
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string FirmType { get; set; }
    public Nullable<int> FirmTypeId { get; set; }
    public string WebSite { get; set; }
    public string Description { get; set; }
    public string Address { get; set; }
    public string HQCity { get; set; }
    public string State { get; set; }
    public string Address1 { get; set; }
    public string Zip { get; set; }
    public string Phone { get; set; }
    public Nullable<decimal> NetPatientRev { get; set; }
    public Nullable<int> NetworkId { get; set; }
    public Nullable<int> NetworkParentId { get; set; }
}

Controller方法:

    [Authorize]
    [EnableCors("*","*","*")]
    public class HospitalsController : ODataController

       [EnableQuery]
       public IQueryable<Entity> GetEntities()
       {
            return db.GetEntities(currentUserId);
       }

    }

如何解决这个问题的任何帮助将不胜感激。

0 个答案:

没有答案