2

适用于 Windows 8 应用程序开发环境。

代码:

   var deserialized = JsonConvert.DeserializeObject<RootObject>(json);
   listView.ItemsSource = deserialized; // error

数据模型:

    public class C
    {
        public List<Y> programs { get; set; }
        public string name { get; set; }
        public int code { get; set; }
    }
    public class RootObject
    {
        public List<C> cs { get; set; }
        public string date { get; set; }
    }
    public class Y
    {
        public string category { get; set; }
        public string time { get; set; }
        public string name { get; set; }
    }

我能做些什么 ?我没有找到解决方案。

4

2 回答 2

3

ItemsSource正在寻找IEnumerable,但您在 中提供单个对象RootObject。如果您在代码中创建一个 RootObject 实例并尝试相同的分配,您会得到同样的错误。

列表中具体应该显示什么?如果您只是将代码更改为:

listView.ItemsSource = deserialized.cs;

listView 应该显示您的C对象。

于 2012-11-25T04:40:08.423 回答
0

我总是无法弄清楚如何从序列化器输出中走出来。我确实有我在下面粘贴的工作代码(Windows 8 商店)。它的作用很明显。

                HttpResponseMessage responseGetEmailByPersonsBare =
                         await clientGetEmailByPersonsBare.PostAsync(UrlBase + EmailDetailGetEmailByPersonsBare, contentGetEmailByPersonsBare);
                     Stream myStream = await responseGetEmailByPersonsBare.Content.ReadAsStreamAsync();
                     var djsGetEmailByPersonsBare = new DataContractJsonSerializer(typeof(AEWebDataStructures.RootObjectEmailDetail));

                     var rootObjectEmailDetail = (AEWebDataStructures.RootObjectEmailDetail)djsGetEmailByPersonsBare.ReadObject(myStream);
                     responseGetEmailByPersonsBare.EnsureSuccessStatusCode();
                     returnTaskInfo.EmailDetails = rootObjectEmailDetail.Data;
                     returnTaskInfo.StatusReturn = AEWebDataStructures.StatusReturn.Success;
于 2012-11-25T01:29:40.937 回答