繁体   English   中英

如果设置为true,ASP.Net WebApi不会序列化bool

[英]ASP.Net WebApi is not serializing bool if set to true

我有以下模型:

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 });
    }
}

问题是当我在Fiddler中将它们设置为false时,在json中缺少IsFolder和IsImage的问题。 设置为true时,它们显示良好。

我怀疑这是因为.Net认为true是默认值,并且排除了该值与默认值相同的字段。

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

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

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

如果尚未提供默认值,这将强制Web Api包含默认值。

编辑

如果使用的Web API较旧版本没有WebApiConfig,也可以在Global.asax.csApplication_Start方法中执行此操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM