I am implementing a Web API that supports partial response.
/api/users?fields=id,name,age
Given the class User
[JsonObject(MemberSerialization.OptIn)]
public partial class User
{
[JsonProperty]
public int id { get; set; }
[JsonProperty]
public string firstname { get; set; }
[JsonProperty]
public string lastname { get; set; }
[JsonProperty]
public string name { get { return firstname + " " + lastname; } }
[JsonProperty]
public int age { get; set; }
}
The Json formatter works great when serializing the all properties, but I can’t manage to modify it at runtime to tell it to ignore some of the properties, depending on the query parameter “fields”.
I am working with JsonMediaTypeFormatter.
I have followed http://tostring.it/2012/07/18/customize-json-result-in-web-api/ in order to customize the formatter, but I can’t find any example on how to force the formatter to ignore some properties.
Create your own
IContractResolverto tell JSON.NET which properties need to be serialized. There’s an example in official documentation you can take draw inspiration from.