无法分配 JsonConvert.DeserializeObject



我使用以下代码从我的网址中获取 json 列表:

  List<Item> songList = new List<Item>();
  var w = new SharpGIS.GZipWebClient();
  Observable.FromEvent<DownloadStringCompletedEventArgs>(w, "DownloadStringCompleted")
    .Subscribe(r =>
    {
        var deserialized = JsonConvert.DeserializeObject<Phone>(r.EventArgs.Result);
                  songList = deserialized.songs.items;
     });
  w.DownloadStringAsync(new Uri("http://myURL.com/"));
  List<ExtendedItem> extendedItemList = organizeBundleAndUri(songList);

在这里调试时,我可以看到反序列化.songs.items 列表有 11 个元素。

但是当涉及到最后一行时,歌曲列表有 0 元素。为什么我不能分配"反序列化.歌曲.项目"对象 对歌曲列表的价值?

如果我按如下方式使用它:

  SongList.ItemsSource = deserialized.songs.items;

我可以在主页上看到数据列表。

顺便说一句,这是我第一次编写C#,我是一名Java开发人员。所以如果这是一个蹩脚的问题,对不起。

DownloadStringAsync 的调用是异步的,因此在分配songList之前立即返回。 在回调中下载歌曲列表(r =>后块中的代码)后,您需要做所有您想做的事情。 如果这意味着你调用了一个方法,那也有效:

 List<Item> songList = new List<Item>();
 var w = new SharpGIS.GZipWebClient();
 Observable.FromEvent<DownloadStringCompletedEventArgs>(w, "DownloadStringCompleted")
    .Subscribe(r =>
    {
        var deserialized = JsonConvert.DeserializeObject<Phone>(r.EventArgs.Result);
                  songList = deserialized.songs.items;
        List<ExtendedItem> extendedItemList = organizeBundleAndUri(songList);
        // DoSomethingElse(extendedItemList);
    });
 w.DownloadStringAsync(new Uri("http://myURL.com/"));

相关内容

  • 没有找到相关文章

最新更新