【发布时间】:2018-04-11 08:22:03
【问题描述】:
假设我有一个异步 web api 2 控制器方法返回一个 Created ActionResult,例如:
return Created(new Uri(Request.RequestUri + "/" + Item.Id), Item);
Item 有一个属性ItemDescriptions,我想在响应时截断它。如何为这样的 Created Web Api 响应定义序列化?
我尝试创建一个自定义解析器,例如:
public class ItemContractResolver: CamelCasePropertyNamesContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
var property = base.CreateProperty(member, memberSerialization);
if (property.PropertyName == "ItemDescriptions")
{
property.ShouldSerialize = i => false;
property.ShouldDeserialize = i => false;
}
return property;
}
}
我稍后在 Controller 构造函数中设置如下:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new ItemContractResolver();
但遗憾的是,这不起作用,ItemDescriptions 属性仍在序列化中。
【问题讨论】:
标签: c# json serialization asp.net-web-api2