无法从 Api 反序列化 json

Can't deserialize json from Api

我正在尝试从我的 Api 获取数据以将其显示在我的 Android Xamarin 项目中。

我的 Api 有 JWT 身份验证。我能够从我的 Api 获得令牌和响应是正确的,但是当我必须反序列化它时,它要么无法做到,要么 return 什么也做不到。

这是无法正常工作的方法

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;
        }

所以它将return如我所说的响应

var jsonResponse = await content.ReadAsStringAsync();

但它会在这一行return为空

result = JsonConvert.DeserializeObject<T>(jsonResponse);

如果我尝试 return 列表 (JsonConvert.DeserializeObject) 它将 return 这个 json 错误

Cannot deserialize the current JSON array (e.g. [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
    }
}

我猜这里的错误是试图用“数据”和“元”标签反序列化 json?请帮忙。

在这种情况下,您必须有一个类似于

的对象
public class MyObject
{
    public List<Category> data { get; set; }
    public Meta meta { get; set; }
}

所以你还应该有一个描述所有元属性的元class,然后像这样使用它

HttpGetAsync<MyObject>(url, token);