gpt4 book ai didi

asp.net-web-api - 无法使MVC4 WebApi在JSON中包含空字段

转载 作者:行者123 更新时间:2023-12-04 13:33:34 25 4
gpt4 key购买 nike

我正在尝试使用MVC4 WebAPI(RTM-今天刚刚安装VS2012 RTM,但昨天在RC中遇到此问题)将对象序列化为JSON,我希望在JSON输出中呈现所有null。
像这样:

[{"Id": 1, "PropertyThatMightBeNull": null},{"Id":2, "PropertyThatMightBeNull": null}]

但是我得到的是
[{"Id":1},{"Id":2}]

我已经找到了这个Q/A WebApi doesnt serialize null fields,但是答案对我不起作用,或者我无法掌握答案的位置。

这是我尝试过的:
  • 在Global.asax.cs的Application_Start中,我添加了:
    var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
    json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include;
    json.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;

    这不是(似乎)错误,并且似乎是在查看我尝试的下一个步骤时实际执行的。
  • 在 Controller 方法中(在ApiController的子类中),添加了:
    base.Configuration.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include;
    base.Configuration.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;

    我说#1被执行是因为#2中的两个值都已在我逐步执行这些行之前设置。
  • 在一个绝望的举动中(因为我真的不想装饰每个对象的每个属性),我尝试将此attrib添加到null和不存在的属性中:
    [JsonProperty(DefaultValueHandling = DefaultValueHandling.Include,
    NullValueHandling = NullValueHandling.Include)]

  • 这三个都产生相同的JSON,但省略了null属性。

    补充笔记:
  • 在IIS(也尝试内置),Windows 7,VS2012 RTM中本地运行。
  • Controller 方法返回列表-也尝试过IEnumerable
  • 我要序列化的对象是pocos。
  • 最佳答案

    这是行不通的:

    var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
    json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include;

    但这确实是:
        GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings() 
    {
    NullValueHandling = Newtonsoft.Json.NullValueHandling.Include
    };

    关于asp.net-web-api - 无法使MVC4 WebApi在JSON中包含空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11999165/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com