使用 HttpClient.PostAsJsonAsync(something) 时是否可以使用 Newtonsoft.Json?

Slo*_*cki 6 c# json.net .net-core

假设我想添加HttpClient这样的类型:

services.AddHttpClient<ISomeService, SomeService>(c =>
{
    c.BaseAddress = new Uri(someUrl);
});
Run Code Online (Sandbox Code Playgroud)

Newtonsoft.Json发送请求时是否可以强制它用于序列化?最好以类似的方式为控制器添加它:

services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
    });
Run Code Online (Sandbox Code Playgroud)

因此,当我使用HttpClient这样的实例时:await httpClient.PostAsJsonAsync(testDto)使用Newtonsoft.Json序列化器而不是内置序列化器。

编辑:刚刚注意到,PostAsJsonAsync(...)GetFromJsonAsync(...)正在使用 中定义的扩展方法System.Net.Http.Json,这基本上使整个问题无效。

And*_*ndy 4

如果要使用,请使用Newtonsoft.Json上的扩展方法。System.Net.Http.HttpClientExtensions

如果您想使用新的,请在System.Text.Json上使用扩展方法。System.Net.Http.Json.HttpClientJsonExtensions

  • 是的,刚刚注意到它只是“System.Net.Http.Json”的扩展。我的错! (2认同)