JSON 反序列化的格式不正确

Incorrect Format for JSON deserialization

我对此非常不适应。在 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 响应在我的 "response" 变量中,但除此之外我不知所措。我做了一些挖掘,发现 Json.NET 应该会有帮助,但我无法理解。他们的文档表明:

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

但是,如果我将其转换为适合我的东西(创建 "Responses" Class 然后):

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

我在 "response" 下的 VS 中收到错误消息“无法从 'RestSharp.IRestResponse' 转换为 'string'。

我觉得我只需要一点点推动就可以克服这个困难。

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

如果您转到 RestSharp 的存储库,您会看到它有一个名为 Content 的特殊 属性,其中包含字符串格式的 JSon。

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

另一种选择是声明您期望的输出类型的响应

IRestResponse<Responses> response = client.Execute<Responses>(request);