如何在Flurl Http中全局配置驼峰命名序列化设置?
如何让Flurl的PostAsync输出驼峰命名的JSON
Flurl默认的JSON序列化行为不会自动采用驼峰命名,你可以通过以下方式配置实现需求:
全局配置(所有请求生效)
如果希望项目里所有Flurl请求都统一用驼峰序列化,在项目初始化阶段配置全局设置即可:
using Flurl.Http; using Newtonsoft.Json.Serialization; // 在Program.cs或Startup类的启动代码中添加 FlurlHttp.Configure(settings => { settings.JsonSerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); // 可选:如果需要忽略null值字段,可追加下面一行 // settings.JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore; });
配置完成后,所有通过PostAsync发送的对象都会自动序列化为驼峰命名的JSON。
单个请求配置(仅当前请求生效)
如果只需要某一个特定请求使用驼峰序列化,直接在请求链中单独配置:
using Flurl.Http; using Newtonsoft.Json.Serialization; var requestData = new { UserName = "Alice", Email = "alice@example.com" }; var response = await "https://your-api-endpoint.com" .AppendPathSegment("users") .ConfigureRequest(settings => settings.JsonSerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver()) .PostJsonAsync(requestData);
若使用System.Text.Json而非Newtonsoft.Json
如果项目依赖System.Text.Json作为序列化器,需要先替换Flurl的默认序列化器,再配置驼峰规则:
1. 替换默认序列化器
using Flurl.Http.Configuration; using Flurl.SystemTextJson; // 全局替换为System.Text.Json序列化器 FlurlHttp.Configure(settings => { settings.JsonSerializer = new SystemTextJsonSerializer(); });
2. 配置驼峰命名规则
// 全局配置驼峰 FlurlHttp.Configure(settings => { settings.JsonSerializer = new SystemTextJsonSerializer(new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // 可选配置:忽略null值字段 // IgnoreNullValues = true }); }); // 单个请求单独配置驼峰 var response = await "https://your-api-endpoint.com/users" .ConfigureRequest(settings => settings.JsonSerializer = new SystemTextJsonSerializer(new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase })) .PostJsonAsync(requestData);
按照以上方式配置后,PostAsync发送的JSON就会采用驼峰命名格式。
内容的提问来源于stack exchange,提问作者Sumesh Es
相关产品推荐
相关产品推荐

