Ответ 1
В настоящее время веб-API ASP.NET(есть планы, чтобы изменить его для окончательной версии для использования Json.Net) использует DataContractJsonSerializer по умолчанию для сериализации JSON.
Таким образом, вы можете управлять процессом сериализации со стандартными атрибутами DataContract/DataMember. Чтобы пропустить нулевые свойства, вы можете установить EmitDefaultValue значение false.
[DataContract]
public class MyObjet
{
[DataMember(EmitDefaultValue = false)]
public string Prop1 { get; set; }
[DataMember(EmitDefaultValue = false)]
public string Prop2 { get; set; }
}
Если вы хотите иметь больше контроля над сериализацией ответов JSON, вы можете использовать пакет WebAPIContrib, который содержит форматировщики, используя Json.Net или встроенный JavaScriptSeralizer.