Json 如何在.net内核中使用httpClient发送可序列化的请求对象?

Json 如何在.net内核中使用httpClient发送可序列化的请求对象?,json,rest,asp.net-core,httpclient,Json,Rest,Asp.net Core,Httpclient,我是.net的新手,我正在寻找一种方法(如果存在的话)能够将请求对象传递给http客户机,而无需“手动”将其序列化为json。我在过去做过一些java实现,在那里它是在幕后完成的,我认为它在.netCore中也应该是可能的 这是请求对象: public class Request { [JsonProperty("number", NullValueHandling = NullValueHandling.Ignore)] public int Number { get; set

我是.net的新手,我正在寻找一种方法(如果存在的话)能够将请求对象传递给http客户机,而无需“手动”将其序列化为json。我在过去做过一些java实现,在那里它是在幕后完成的,我认为它在.netCore中也应该是可能的

这是请求对象:

public class Request
{
    [JsonProperty("number", NullValueHandling = NullValueHandling.Ignore)]
    public int Number { get; set; }
}
我在寻找这样的东西:

var request = new Request {Number=2};
client.PostAsync("url", request)
我发现了一个类似的实现,但它似乎不兼容。netcore兼容:

netcore有类似的功能吗


谢谢

您仍然需要将对象序列化为JSON字符串


所引用的
Microsoft.AspNet.WebApi.Client
库将具有
postsjsonasync
扩展方法以及许多其他扩展
HttpClient
的方法

内部看起来可能是这样的

public static Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient client, string requestUri, T obj) {
    var json = JsonConvert.SerializeObject(obj); 
    var content = new StringContent(json, Encoding.UTF8, "application/json");
    return client.PostAsync(requestUri, content);    
}

PostAsJsonAsync
已经存在于框架中,它只是一个扩展,需要一个额外的using语句。实际上这就是我想要的答案。不知何故,我没有找到这个
PostAsJsonAsync
扩展方法,但它确实是可用的,它满足了我的需求。谢谢。
Microsoft.AspNet.WebApi.Client
targets.NET标准。命名有点不合适,因为它是为原始的ASP.NET Web Api(而不是Core)编写的,但它与Core 100%兼容。它所做的只是将扩展添加到非特定于Web Api的
HttpClient
using System.Net.Http;

//...

var request = new Request { Number = 2 };
var response = await client.PostAsJsonAsync("url", request);