如果你使用
Formatters.JsonFormatter
在你的
WebApiConfig.cs
然后
1)
如果必须在应用程序级别忽略空值,则意味着所有api操作都将忽略空值
public class IgnoreNullValuesFilter : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
actionExecutedContext.ActionContext.RequestContext.Configuration.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
base.OnActionExecuted(actionExecutedContext);
}
}
并将此筛选器添加到
喜欢
config.Filters.Add(new IgnoreNullValuesFilter());
将此筛选器添加到后,您将发现所有api操作都返回忽略空值的数据
[IgnoreNullValuesFilter]
因为我们在
WebApiConfig.cs网站
WebApiConfig.cs网站
2)
如果必须使用操作筛选器忽略特定api操作的空值
public class IgnoreNullValuesFilter : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
var objectContent = actionExecutedContext.Response.Content as ObjectContent;
if (objectContent != null)
{
var type = objectContent.ObjectType;
var value = JsonConvert.SerializeObject(objectContent.Value, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});
objectContent.Value = value;
//If you want to send your response as strongly type
JObject jObject = JObject.Parse(value);
objectContent.Value = jObject;
}
base.OnActionExecuted(actionExecutedContext);
}
}
以及忽略空值的api
[HttpGet]
[IgnoreNullValuesFilter]
public IHttpActionResult ApiName()
{
var myObject = new Item { Id = 1, Name = "Matthew", Salary = 25000, Department = null };
return Ok(myObject);
}
如果您想包含空值,那么只需从api中删除[IgnoreNullValuesFilter]
如果你不想使用任何动作过滤器
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
public long Salary { get; set; }
public string Department { get; set; }
}
你的API看起来像
[HttpGet]
public IHttpActionResult ApiName()
{
var myObject = new Item { Id = 1, Name = "Matthew", Salary = 25000, Department = null };
return Json(myObject, new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore
});
}
[HttpGet]
public IHttpActionResult ApiName()
{
var myObject = new Item1 { Id = 1, Name = "Matthew", Salary = 25000, Department = null };
var jsonIgnoreNullValues = JsonConvert.SerializeObject(myObject, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});
JObject jObject = JObject.Parse(jsonIgnoreNullValues);
return Ok(jObject);
}
结果:
Item
有财产
department = null
你可以发送
myObject