我正在做C# web Api Method
和消费者。
首先,该方法检索一个类实例,然后Consumer像这样调用它,并将其解析为一个名为R
HttpResponseMessage response = client.PostAsJsonAsync(url, param).Result;
R value = await response.Content.ReadAsJsonAsync<R>();
现在,我需要从我的Api中检索它只有具有数据的类属性。因此,它使用
将类实例解析为Json,如我所问的here 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,当我序列化响应以避免null属性时,respose被序列化了两次...
如何避免这种情况,或如何阅读?
谢谢
答案 0 :(得分:2)
在启动时配置格式化程序。 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);
}