Я сериализую объекты и возвращаюсь как json из своего веб-сервиса. Тем не менее, я пытаюсь опустить свойства null из сериализованного json. Есть ли способ сделать это? Я использую бета-версию веб-Api MVC 4.
Удаление нулевых свойств от Json в MVC Web Api 4 Beta
Ответ 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.
Ответ 2
В Json.Net вы можете использовать JsonPropertyAttribute с помощью NullValueHandling = NullValueHandling.Ignore. Похоже, здесь нет способа сделать это для всего класса, только для каждого класса/свойства класса.
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string SometimesNull { get; set; }
FYI. Существует причины, почему Json.Net по умолчанию сериализует свойства с нулевыми значениями. Взгляните, возможно, некоторые из этих причин применимы к вашим случаям.