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);
我对此非常不适应。在 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);