c# - C# Web API 方法 Json 序列化
问题描述
我正在做一个C# web Api Method
和消费者。
首先,该方法检索一个类实例,消费者像这样调用它,并将其解析为一个名为R
HttpResponseMessage response = client.PostAsJsonAsync(url, param).Result;
R value = await response.Content.ReadAsJsonAsync<R>();
现在,我需要从我的 Api 中检索它具有数据的类属性。因此,正如我在这里问的那样,它将类实例解析为 Json ,使用
string jsonIgnoreNullValues = JsonConvert.SerializeObject(response, Formatting.Indented, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});
我的网络方法定义很简单
public IHttpActionResult Newemployee([FromBody] RequestManual items)
{
ResponseManual response = Service.Newemployee(items.Datos);
//Before
return Ok(response);
//Now
string jsonIgnoreNullValues = JsonConvert.SerializeObject(response, Formatting.Indented, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});
return Ok(jsonIgnoreNullValues);
}
}
.NET在响应中自动序列化为Json,当我序列化响应以避免空属性时,响应被序列化两次......
如何避免这种情况,或者我该如何阅读?
谢谢
解决方案
在启动时配置格式化程序。Web API 使用 Json.Net 框架,因此您可以访问相同的序列化设置
WebApiConfig.cs
var jsonFormatter = config.Formatters.JsonFormatter
jsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore
这样您就可以像以前一样使用原始代码
[HttpPost]
public IHttpActionResult Newemployee([FromBody] RequestManual items) {
if(ModelState.IsValid) {
var response = Service.Newemployee(items.Datos);
return Ok(response);
}
return BadRequest(ModelState);
}
推荐阅读
- python - 来自用 Python 自动化无聊的东西的“逗号代码”程序
- ios - 提前从 HTML 加载 WKWebView 页面
- python - 使用 numpy 从两个对象向量生成对矩阵
- javascript - NestJs - 如何在拦截器上获取请求正文
- javascript - 调用 $('#idname').html(""); 后 jQuery 表单提交不起作用
- go - 如何在recover() 中捕获runtime.errorString?
- javascript - 自定义文件输入按钮不会选择文件
- android - 传递给第二个 Activity 的 ArrayList 数据未在 TableLayout 中显示
- python - 如何在 Python 3 的 exec 命令中停止执行?
- python - 如何在tensorflow中实现Region of Interest Pooling层?