2016-07-26 63 views
0

我找到了一个解决方案,我的主要问题是使用REST填充数据的列表视图。我找到的示例有一个JSON数组返回。在测试时,有一个错误告诉我,我需要一个JSON对象和一个JSON数组。我通过查看Fiddler中返回的数据证实了这一点。有了这些信息,我发现了一些代码来将响应转换为最近发布的JSON对象。在重写表类并更改所有代码时,我一直在理解函数的返回对象。当它是JSON数组时,Return是返回rootoject.Users;在我的情况下,按照相同的语法,它应该是rootobject.Office ;.我想获得一个.ItemSource返回一个列表视图的JSON对象

这是从便携类呼叫:

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

这与响应的JSON反序列化和RESTClient实现类我返回对象:

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

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

回答

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

在此List每个项目是一个OffcObjecct包含属性office它返回一个Office[]

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

return rootobject[0].office; 
+0

我在正确的道路上,但直到我看到你的回应,我没有把它放在一起。你提到;我为什么选择这种方式来构造数据。我对REST和Jason完全陌生。我正在把这些碎片放在一起。你会分享你将如何构建数据?我假设你在谈论“公共职类办公室”。 –

相关问题