You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RestSharp无法反序列化含下划线帕斯卡命名属性问题求助

问题解决:RestSharp反序列化时MaterialCompositionFirstChoice始终为null

排查方向与解决方案

1. 匹配序列化器与特性命名空间

RestSharp不同版本默认使用的序列化器不同,必须确保类的特性标记和序列化器对应:

  • 若使用Newtonsoft.Json(Json.NET),类文件需添加using Newtonsoft.Json;,并使用[JsonProperty("xxx")]特性
  • 若使用System.Text.Json,类文件需添加using System.Text.Json.Serialization;,并使用[JsonPropertyName("xxx")]特性

问题大概率出在特性与序列化器不匹配——比如你用了JsonProperty,但RestSharp默认启用的是System.Text.Json序列化器。

2. 强制RestSharp使用Newtonsoft.Json序列化器

如果你的类已经用了JsonProperty特性,需要明确配置RestSharp使用NewtonsoftJsonSerializer:

RestSharp 107+版本写法:

var baseUrl = "some url";
var options = new RestClientOptions(baseUrl)
{
    Serializer = new NewtonsoftJsonSerializer()
};
RestClient client = new RestClient(options);
var response = await client.ExecuteAsync<List<MaterialCompositionInfo>>(request);

RestSharp 107以下版本写法:

var baseUrl = "some url";
RestClient client = new RestClient(baseUrl);
client.AddHandler("application/json", new NewtonsoftJsonSerializer());
var response = await client.ExecuteAsync<List<MaterialCompositionInfo>>(request);

注意:需先安装RestSharp.Serializers.NewtonsoftJson NuGet包

3. 手动验证反序列化逻辑

绕过RestSharp直接用Newtonsoft.Json解析响应内容,确认数据本身无问题:

var content = response.Content;
var materialList = JsonConvert.DeserializeObject<List<MaterialCompositionInfo>>(content);

如果手动解析后MaterialCompositionFirstChoice能正常取值,说明问题完全由RestSharp序列化器配置错误导致,按步骤2重新配置即可。

4. 最后检查拼写一致性

再次确认:

  • JSON字段MaterialComposition_FirstChoice与特性[JsonProperty("MaterialComposition_FirstChoice")]的字符串完全一致(包括下划线、大小写)
  • 类属性MaterialCompositionFirstChoice无拼写错误

内容的提问来源于stack exchange,提问作者hmayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:23:34