8.5JSON 序列化配置
框架默认采用 System.Text.Json 处理 HTTP 请求的 JSON 序列化,支持以下配置方式:
框架默认采用 System.Text.Json 处理 HTTP 请求的 JSON 序列化,支持以下配置方式:
- 全局默认配置
通过 HttpRemoteOptions 为所有 HttpClient 设置统一的 JSON 序列化行为:
services.AddHttpRemote(builder => {}) .ConfigureOptions(options => // 或使用重载:.ConfigureOptions((options, serviceProvider) => { options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; });- 客户端级配置(优先级更高)
当同时存在全局配置和客户端级配置时,框架会优先采用客户端级配置:
// 配置默认客户端services.AddHttpClient(string.Empty) .ConfigureOptions(options => // 或使用重载:.ConfigureOptions((options, serviceProvider) => { options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; });// 配置特定客户端services.AddHttpClient("furion") .ConfigureOptions(options => // 或使用重载:.ConfigureOptions((options, serviceProvider) => { options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; });使用示例:
var model = await httpRemoteService.SendAsAsync<YourModel>(HttpRequestBuilder.Get("https://furion.net/test-json") .SetHttpClientName("furion")); // 不设置默认为 string.Empty- 手动处理(完全控制)
当需要特殊处理时可直接操作原始响应:
var jsonString = await httpRemoteService.GetAsStringAsync("https://furion.net/test-json");var model = JsonSerializer.Deserialize<YourModel>(jsonString, new JsonSerializerOptions());如果您希望替换框架默认的 System.Text.Json 序列化提供程序,例如使用 Newtonsoft.Json 来提供 JSON 序列化配置选项,那么您可以通过实现 IHttpContentProcessor 接口来满足这一自定义需求。