2014-09-30 50 views
1

我刚刚开始使用RestSharp进行开发,并且遇到了早期障碍。我想,一旦我理解了这个简单但关键的概念,我应该关闭并运行。我之后需要返回一个访问令牌,然后再进行标准调用。我已经建立了以下类,从json2csharp.com产生:如何在RestSharp中反序列化JSON?

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时,它返回一个空白值。有人可以指出我的错误吗?

+3

您是否尝试过'deserial.Deserialize (tokenresponse)'? – 2014-09-30 18:27:46

+0

哇。我知道这会很简单。所以,而不是des.Token,它变成des.Access_Token.Token ...谢谢!你为我节省了很多头撞在我的桌子上。 – Boone 2014-09-30 18:33:30

+0

没问题,有时你需要的是另一双眼睛 – 2014-09-30 18:34:24

回答

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); 
} 
+1

我想问题是关于使用RestSharp而不是“Newtonsoft.Json”。 – 2017-12-05 07:22:39