我正在尝试为列表视图获取.ItemSource返回JSON对象

时间:2016-07-26 22:51:29

标签: rest listview xamarin cross-platform

我确实找到了一个解决我的主要问题的方法,即使用REST用数据填充listview。我找到的样本返回了一个JSON数组。在测试时,有一个错误告诉我我需要一个JSON对象和一个JSON数组。我通过查看Fiddler中返回的数据证实了这一点。有了这些信息,我发现了一些代码,用于将响应从最近的帖子转换为JSON对象。在重写表类并更改所有代码时,我无法理解函数的Return对象。当它是一个JSON数组时,Return返回rootonject.Users;在我的情况下,遵循相同的语法,它应该是rootobject.Office;。

这是来自便携式课程的电话:

var sv = new RestClient();

List.ItemsSource = await sv.getOfficeAsync();

这是JSON对象数据表类:

public class OffcObjecct
{
    [JsonProperty("TableName")]
    public Office[] office { get; set; }
}

public class Office
{
    [JsonProperty("id")]
    public string ID { get; set; }

    [JsonProperty("OfficeName")]
    public string officename { get; set; }
}

这是RESTClient类,其中包含响应的JSON反序列化以及我的返回对象:

    public RestClient()
    {
    }

    public async Task<Office[]> getOfficeAsync()
    //public async Task<OffcJason> GetOffcAsync()  
    {
        var client = new System.Net.Http.HttpClient();
        var uri = "https://application.azurewebsites.net/tables/Tablename?$filter=(field%20eq%20" + Vars.Number + "M)";
        client.DefaultRequestHeaders.Add("ZUMO-API-VERSION", "2.0.0");
        client.DefaultRequestHeaders.Add("X-ZUMO-AUTH", SessVars.strAuthToken);
        client.DefaultRequestHeaders.Add("Accept", "application/json");
        var response = await client.GetAsync(uri);
        var offcsJson = response.Content.ReadAsStringAsync().Result;

        var rootobject = JsonConvert.DeserializeObject<List<OffcObjecct>>(offcsJson);

        return rootobject.office;

    }

这是我得到的错误: enter image description here

任何帮助将不胜感激......

1 个答案:

答案 0 :(得分:0)

// root object will be a List<OffcObjecct>
var rootobject = JsonConvert.DeserializeObject<List<OffcObjecct>>(offcsJson);

List中的每个项目都是OffcObjecct,其中包含一个返回office

的属性Office[]

我不知道您为什么选择以这种方式构建数据 - 但如果您想要返回Office [],这是您的方法签名所需的,请尝试

return rootobject[0].office;