ASP.NET Web API partial response Json serialization

泪湿孤枕 提交于 2019-11-29 05:13:32

Create your own IContractResolver to tell JSON.NET which properties need to be serialized. There's an example in official documentation you can take draw inspiration from.

Just to add to the responses already here; I found a nuget package that does this for you

WebApi.PartialResponse

Git hub source code:
https://github.com/dotarj/PartialResponse

It essentially wraps the formatter discussed above, so that you only have to configure it like this:

GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new PartialJsonMediaTypeFormatter() { IgnoreCase = true });

Then, you can specify ?fields=<whatever> in your request, and it will return the model with only those fields specified.

You can also conditionally serialize a property by adding a boolean method with the same name as the property and then prefixed the method name with ShouldSerialize. The result of the method determines whether the property is serialized. If the method returns true then the property will be serialized, if it returns false and the property will be skipped.

public class Employee
{
  public string Name { get; set; }
  public Employee Manager { get; set; }

  public bool ShouldSerializeManager()
  {
      // don't serialize the Manager property if an employee is their own manager
      return (Manager != this);
  }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!