如果设置为true,则ASP.NET WebAPI不会序列化bool



我有以下模型:

public class DocumentViewModel
{
    public long Id { get; set; }
    public long? ParentFolderId { get; set; }
    public bool IsFolder { get; set; }
    public bool IsImage { get; set; }
}

和以下API控制器:

public HttpResponseMessage GetChildren(long jobId, long folderId)
{            
    using (var model = DatabaseHelper.GetModel())
    {
        var accessLevel = MembershipHelper.GetLoggedInAccessLevel(model);
        List<DocumentViewModel> documents = DocumentHelper.GetDocumentsForMobile(model, jobId, folderId, accessLevel).ToList();
        return this.Request.CreateResponse(
            HttpStatusCode.OK,
            new { data = documents });
    }
}

问题是,当我将其设置为false时,我在提琴手中审查了这一点时,iSfolter和isimage缺少。当他们设置为true时,它们很好。

我怀疑这是因为.net认为true是默认值,并且不包括该值与默认值相同的字段。

我如何告诉.net始终包含此值,无论如何?

WebApiConfig类的Register方法中(位于App_Start文件夹中)尝试添加此行:

config.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling =
                                   Newtonsoft.Json.DefaultValueHandling.Include;

这应该强制Web API(如果还没有)。

编辑

如果您使用的是没有Webapiconfig的旧版本的Web API,则也可以在Global.asax.cs中的Application_Start方法中执行此操作:

var config = GlobalConfiguration.Configuration;
var jsonSettings = config.Formatters.JsonFormatter.SerializerSettings;
jsonSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;

相关内容

  • 没有找到相关文章

最新更新