加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:07:45 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用MVC4 WebAPI将对象序列化为 JSON(RTM – 今天刚刚安装了VS2012 RTM但是昨天在RC中遇到了这个问题)并且我希望在JSON输出中呈现所有空值. 像这样: [{"Id": 1,"PropertyThatMightBeNull": null},{"Id":2,"PropertyThatMightBeNull": null}] 但我
我正在尝试使用MVC4 WebAPI将对象序列化为 JSON(RTM – 今天刚刚安装了VS2012 RTM但是昨天在RC中遇到了这个问题)并且我希望在JSON输出中呈现所有空值.
像这样:
[{"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;

这似乎没有(似乎)错误,似乎实际执行基于我尝试的下一件事.
>在控制器方法中(在ApiController的子类中),添加:

base.Configuration.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include;
base.Configuration.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;

我说#1被执行了因为#2中的两个值都已经在我走过之前已经设置好了.
>在一个绝望的移动中(因为我真的不想装饰每个对象的每个属性)我尝试将此属性添加到一个null且不存在的属性:

[JsonProperty(DefaultValueHandling = DefaultValueHandling.Include,NullValueHandling = NullValueHandling.Include)]

所有三个都生成相同的JSON,省略了null属性.

补充说明:

>在IIS中本地运行(也尝试内置),Windows 7,VS2012 RTM.
>控制器方法返回List – 尝试了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
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读