在发出REST请求时返回的JSON一切正常,除了任何bool属性,如果为false,则不包含在JSON中(通过Fiddler验证)。我试过了:
[DataMember(IsRequired = true)]
public bool success { get; set; }
但它仍未归还。
有什么建议吗?而且我确实认为它不会为nulls返回任何内容,它只是bool我想要总是返回。
WebApiConfig.cs:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Formatters.XmlFormatter.UseXmlSerializer = true;
config.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.IgnoreAndPopulate;
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
}
}
DatasourceController.cs:
public class DatasourceController : ApiController
{
[HttpGet("datasource/metadata/{datasource}")]
public MetaDataInfo GetDatasourceSchema(string datasource, string node = "")
{
DocumentInfo docInfo = DocumentData.GetDocInfo("dave");
return MetaDataFactory.GetMetaDataInfo(docInfo, datasource, node);
}
}
答案 0 :(得分:0)
我认为通过将[DefaultValue(false)]
属性置于您的success
变量和其他bool变量之上,您应该得到所需的结果。
您已将DefaultValueHandling
设为Newtonsoft.Json.DefaultValueHandling.IgnoreAndPopulate
。从文档中我们可以阅读:
在序列化对象时忽略成员值与成员的默认值相同的成员,并在反序列化时将成员设置为默认值。
当我读到它意味着在序列化期间你的假布尔值应该消失。但是,只要它具有默认值,当您反序列化时它将再次出现在JSON中。
答案 1 :(得分:0)
我一直在寻找相同的信息。 事实证明你使用了can specify for a specific属性:
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Include)]
我在ASP.NET Core 1 RC2上测试过。 那是MVC 6。