Удаление нулевых свойств от Json в MVC Web Api 4 Beta

Я сериализую объекты и возвращаюсь как json из своего веб-сервиса. Тем не менее, я пытаюсь опустить свойства null из сериализованного json. Есть ли способ сделать это? Я использую бета-версию веб-Api MVC 4.

Ответы

Ответ 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 по умолчанию сериализует свойства с нулевыми значениями. Взгляните, возможно, некоторые из этих причин применимы к вашим случаям.