如何在RestSharp中反序列化JSON?

时间:2014-09-30 18:25:55

标签: c# json restsharp

我刚刚开始使用RestSharp进行开发并且遇到了早期的障碍。我想,一旦我理解了这个简单但关键的概念,我就应该开始运作。我需要在稍后进行标准调用之前返回访问令牌。我已经设置了以下类,从json2csharp.com生成:

    public class AccessToken
{
    public string Instance_Url { get; set; }
    public string Token { get; set; }
    public string Expiration_date { get; set; }
    public string Refresh_Token { get; set; }
}

public class RootObject
{
    public AccessToken Access_Token { get; set; }
}

我在点击按钮上编码了以下内容:

        var tokenclient = new RestClient();
        tokenclient.BaseUrl = "https://url";
        tokenclient.Authenticator = new HttpBasicAuthenticator("username", "password");
        var tokenrequest = new RestRequest(Method.GET);
        tokenrequest.RequestFormat = DataFormat.Json;
        IRestResponse tokenresponse = tokenclient.Execute(tokenrequest);
        var content = tokenresponse.Content;
        RestSharp.Deserializers.JsonDeserializer deserial = new JsonDeserializer();
        var des = deserial.Deserialize<AccessToken>(tokenresponse);

我能够将以下JSON作为字符串返回:

{
"Access_Token": {
"Instance_Url": "https://url",
"Token": "StringToken",
"Expiration_date": "9/30/2015 6:15:27 PM",
"Refresh_Token": "StringToken"
}
}

然而,当我拉des.Token时,它返回一个空值。有人可以指出我的错误吗?

1 个答案:

答案 0 :(得分:1)

using Newtonsoft.Json;
var response = client.DownloadString(url + queryString);
ResponseModel<string> dataResponse = new ResponseModel<string>();
if (!string.IsNullOrEmpty(response))
{
        dataResponse = JsonConvert.DeserializeObject<ResponseModel<string>>(response);
}