RestSharp can';我不能正确地自动反序列化我的JSON响应-但是JSON.NET可以-为什么?

RestSharp can';我不能正确地自动反序列化我的JSON响应-但是JSON.NET可以-为什么?,json,json.net,restsharp,Json,Json.net,Restsharp,我对JSON有一个奇怪的问题。我使用RestSharp(v104.4)从我的C#代码调用restweb服务,调用工作正常 问题在于返回的JSON——如果我让RestSharp“自动”解码——它不起作用。如果我使用JSON.NET对手动返回的JSON进行反序列化,它就可以正常工作。为什么? 我的请求是: RestRequest request = new RestRequest(MyUrl, Method.GET); request.AddHeader("Authorization", "Bear

我对JSON有一个奇怪的问题。我使用RestSharp(v104.4)从我的C#代码调用restweb服务,调用工作正常

问题在于返回的JSON——如果我让RestSharp“自动”解码——它不起作用。如果我使用JSON.NET对手动返回的JSON进行反序列化,它就可以正常工作。为什么?

我的请求是:

RestRequest request = new RestRequest(MyUrl, Method.GET);
request.AddHeader("Authorization", "Bearer " + token);

IRestResponse<JsonResponse> response = _restClient.Execute<JsonResponse>(request);
使用此类,我试图让RestSharp自动反序列化此响应:

public class JsonResponse {
    public string RoomUrl { get; set; }
    public string Text { get; set; }
}
但是使用RestSharp,
response.Data
返回的
null
值用于
RoomUrl

但是,如果我使用JSON.NET手动将响应反序列化为
JsonResult
,那么这两条信息(
RoomUrl
Text
)都可以正确识别,根本没有问题

var result = JsonConvert.DeserializeObject<JsonResponse>(response.Content);
var result=JsonConvert.DeserializeObject(response.Content);
在这里,
result.RoomUrl
可以顺利地获取返回的URL

我只是有点困惑,为什么RestSharp没有正确地反序列化返回到
JsonResponse
对象中的JSON?有什么想法吗


我还尝试在
JsonResponse
中的
roomURL
字符串中添加
[JsonProperty(“roomURL”)]
——但这似乎没有任何区别。

在发布到RestSharp谷歌组后,问题已经解决

从v103开始,RestSharp不再使用JSON.NET,而是使用它自己的JSON反序列化程序,它处理某些事情的方式略有不同

RestSharp JSON反序列化程序没有自动“拾取”我得到的JSON响应中的名称
roomURL
,但在我的响应类上使用
DeserializeAs
属性解决了这个问题:

public class JsonResponse {
    [DeserializeAs(Name = "roomURL")]
    public string RoomUrl { get; set; }
    public string Text { get; set; }
}
现在,来自我的请求的JSON响应按照预期自动反序列化,我可以开始使用它了


感谢谷歌团队的安德鲁·杨解决了这个问题

因此,restsharp反序列化程序希望属性以小写开头?restsharp反序列化程序不会拾取
RoomUrl
RoomUrl
之间的映射,因为它不遵循wiki中的这些映射规则:
public class JsonResponse {
    [DeserializeAs(Name = "roomURL")]
    public string RoomUrl { get; set; }
    public string Text { get; set; }
}