Метод веб-API на C # - PullRequest
       16

Метод веб-API на C #

0 голосов
/ 06 февраля 2019

Я делаю 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 в ответе. Когда я сериализирую ответ, чтобы избежать нулевых свойств, respose сериализуется дважды ...

Как можно избежать этого, или как я могу это прочитать?

Спасибо

1 Ответ

0 голосов
/ 06 февраля 2019

Настройка форматера при запуске.Под капотом веб-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);
}
...