0

У меня есть следующие модели:ASP.Net WebAPI не сериализации логического значения, если установлен верно

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

Проблема заключается в том, что IsFolder и IsImage отсутствует из json, когда я рассматриваю это в Fiddler, когда они установлены в false. Они показывают, когда они настроены на истину.

Я подозреваю, что это связано с тем, что .Net считает, что значение true является значением по умолчанию и исключает поля, значения которых совпадают с значениями по умолчанию.

Как сообщить .Net ВСЕГДА включить это значение, независимо?

ответ

3

В Register способе WebApiConfig класса (находится в папке App_Start) попробуйте добавить следующую строку:

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

Это должно заставить Web Api включать значения по умолчанию, если это уже не.

EDIT

Если вы используете старую версию Web API, которые не имеют WebApiConfig, вы также можете сделать это в методе Application_Start в Global.asax.cs:

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

Это Безразлично» t я вижу, что у меня есть класс WebApiConfig. Как бы добавить это? – Scottie

+0

@Scottie Посмотрите мое обновление. –

Смежные вопросы