JSON反序列化的格式不正确

时间:2017-05-11 13:40:43

标签: c# json json.net restsharp

我对此非常不满意。在C#中,我正在编写一种使用REST从网站获取数据的方法。根据网站上的文档,我应该使用这样的东西:

var client = new RestClient(url + "token");
var request = new RestRequest(Method.POST);

request.AddParameter("application/x-www-form-urlencoded",
                "grant_type=password&username=" + UserName +
                "&password=" + Password +
                "&tenant=" + Company,
                ParameterType.RequestBody);

IRestResponse response = client.Execute(request);

获得如下响应:

{
  "access_token": "generated_token_value",
  "token_type": "bearer",
  "expires_in": 2591999
}

但是,我对如何阅读该信息没有任何根据。我假设JSON响应在我的“响应”变量中,但除此之外我不知所措。我做了一点挖掘,发现Json.NET应该会有所帮助,但它已经超出了我的想象。他们的文件表明:

Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);

但是,如果我将其转换为看起来正确的东西(创建“响应”类然后):

Responses responses = JsonConvert.DeserializeObject<Responses>(response);

我在VS中的“响应”中收到错误,说“无法从'RestSharp.IRestResponse'转换为'string'。

我觉得我只是需要一点轻推来克服这个驼峰。

2 个答案:

答案 0 :(得分:2)

如果你去Why does Date.parse give incorrect results?的存储库,你会发现它有一个名为Content的特殊属性,其中包含字符串格式的JSon。

现在,您可以使用JsonConvert.DeserializeObject<Responses>(response.Content);来检索您的对象。

答案 1 :(得分:1)

Responses responses = JsonConvert.DeserializeObject<Responses>(response.Content);