RestSharp 在版本 107 中指定默认 JsonSerializer

aqu*_*ind 3 restsharp

在使用旧版本 RestSharp 的当前代码中,可以选择指定默认 JsonSerializer,我无法弄清楚如何在版本 107 中指定 request.JsonSerializer

            var request = new RestRequest("abc");
            request.AddHeader(Constants.HttpHeaderNames.ContentType, "application/json; charset=utf-8");            
            request.JsonSerializer = NewtonsoftJsonSerializer.Default;
Run Code Online (Sandbox Code Playgroud)

Ale*_*rev 6

不再支持特定于请求的序列化器。使用 RestSharp 的正确方法(类似于HttpClient)是每个 API 客户端实例都有一个实例。通常,您所使用的 API 的所有端点都具有相同的序列化。

如果您必须使用NewtonsoftJson,请按照文档中的说明使用它。

client.UseNewtonsoftJson();
Run Code Online (Sandbox Code Playgroud)

请不要添加内容类型标头。

由于 API 可能会发生变化,您可以随时参考最新版本的文档

2023 年 4 月 26 日更新

当前最新的 v110 已将串行器配置移至RestSharpOptions. 这样做是为了避免在并发调用期间更改序列化器,这可能会产生奇怪的副作用。

新的 API 可以这样使用:

var client = new RestClient(
    options, 
    configureSerialization: s => s.UseSerializer(() => new CustomSerializer());
);
Run Code Online (Sandbox Code Playgroud)

有一个讨论是添加一个选项来为每个请求设置一个序列化器。