HttpClient не имеет PostAsJsonAsync
метода.Это метод расширения , добавленный пакетом Microsoft.AspNet.WebApi.Client.Он не делает ничего особенно сложного, он использует Json.NET для сериализации объекта content
в JSON.Вы можете сделать то же самое с парой строк:
var json = JsonConvert.SerializeObject(someObject);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var result = await client.PostAsync(url, content);
По умолчанию Json.Net выполняет сериализацию нулевых свойств.Он будет сериализовать все элементы в словаре, даже если его значение равно null
Вы можете игнорировать нулевые свойства с помощью свойства NullValueHandling :
var settings=new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
var json = JsonConvert.SerializeObject(someObject,settings);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var result = await client.PostAsync(url, content);
Thisне повлияет на словари.Вам придется отфильтровать элементы словаря, которые содержат null
значений, перед сериализацией