Веб-сервисы

Удаление нулевых значений из ответов OData

Удаление полей с нулевыми значениями из ответов OData-сервиса.

public class CustomEntityTypeSerializer : ODataEntityTypeSerializer
{
    public CustomEntityTypeSerializer(ODataSerializerProvider serializerProvider) : base(serializerProvider)
    {
    }


    public override ODataEntry CreateEntry(SelectExpandNode selectExpandNode, EntityInstanceContext entityInstanceContext)
    {
        var entity = base.CreateEntry(selectExpandNode, entityInstanceContext);
        entity.Properties = entity.Properties.Where(property => property.Value != null).ToList();
        return entity;
    }
}


public class CustomSerializerProvider : DefaultODataSerializerProvider
{
    public override ODataEdmTypeSerializer GetEdmTypeSerializer(IEdmTypeReference edmType)
    {
        return edmType.IsEntity() ? new CustomEntityTypeSerializer(this) : base.GetEdmTypeSerializer(edmType);
    }
}
public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        config.Formatters.InsertRange(0, ODataMediaTypeFormatters.Create(new CustomSerializerProvider(), new DefaultODataDeserializerProvider()));
    }
}

About the author

Добавить комментарий