[英]Can't deserialize JSON from REST API (Wordpress) using RestSharp
[英]Can't deserialize json from Api
我正在尝试从我的 Api 获取数据以将其显示在我的 Android Xamarin 项目中。
我的 Api 有 JWT 认证。 我能够正确地从我的 Api 获得令牌和响应,但是当我必须反序列化它时,它要么无法执行,要么不会返回任何内容。
这是无法正常工作的方法
private async Task<T> HttpGetAsync<T>(string url, string token)
{
T result = default(T);
try
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
HttpResponseMessage response = httpClient.GetAsync(url).Result;
HttpContent content = response.Content;
if (response.IsSuccessStatusCode)
{
var jsonResponse = await content.ReadAsStringAsync();
result = JsonConvert.DeserializeObject<T>(jsonResponse);
}
else
{
throw new Exception(((int)response.StatusCode).ToString() + " - " + response.ReasonPhrase);
}
}
catch (Exception ex)
{
OnError(ex.ToString());
}
return result;
}
所以它会像我说的那样返回响应
var jsonResponse = await content.ReadAsStringAsync();
但随后它将在这一行返回 null
result = JsonConvert.DeserializeObject<T>(jsonResponse);
如果我尝试返回一个列表 (JsonConvert.DeserializeObject<List>),它将返回此 json 错误
Cannot deserialize the current JSON array (eg [1,2,3]) into type...
在我的代码中,T 将是我的Category
实体
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
这是我的 json
{
"data": [
{
"id": 1,
"name": "Alianzas"
},
{
"id": 2,
"name": "Pendientes"
},
{
"id": 3,
"name": "Pulseras"
},
{
"id": 4,
"name": "Colgantes"
},
{
"id": 5,
"name": "Gargantillas"
},
{
"id": 6,
"name": "Relojes"
}
],
"meta": {
"totalCount": 6,
"pageSize": 20,
"currentPage": 1,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false
}
}
我想这里的错误是试图用“数据”和“元”label 反序列化 json? 请帮忙。
在这种情况下,你必须有一个 object 应该是这样的
public class MyObject
{
public List<Category> data { get; set; }
public Meta meta { get; set; }
}
所以你还应该有一个描述所有元属性的 Meta class 然后像这样使用它
HttpGetAsync<MyObject>(url, token);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.