2012-07-19 33 views
0

我跟着从here错误7

教程,但是当我想用我自己的JSON实现它,我得到一个错误信息

无法反序列化当前的JSON对象(例如{“name”:“value”})转换为类型'System.Collections.Generic.List`1 [BelajarJson.RootObject]',因为该类型需要一个JSON数组(例如[1,2,3])才能正确地反序列化。 要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为正常的.NET类型(例如,不是像整数这样的基本类型,也不是集合类型像数组或列表),可以从JSON对象反序列化。 JsonObjectAttribute也可以添加到类型中,以强制它从JSON对象反序列化。 路径 'err_code',第2行,位置13

Content.cs

namespace BelajarJson 
{ 
    public class Content 
    { 
    public int id { get; set; } 
    public string type { get; set; } 
    public string label { get; set; } 
    public string icon { get; set; } 
    public string url { get; set; } 
    public int timestamp { get; set; } 
    public string key { get; set; } 
    } 
} 

Paging.cs

namespace BelajarJson 
{ 
public class Paging 
{ 
    public int current_page { get; set; } 
    public int total_page { get; set; } 
    public int total_all { get; set; } 
    public int limit_per_page { get; set; } 
} 
} 

RootObject.cs

using System.Collections.Generic; 

namespace BelajarJson 
{ 
public class RootObject 
{ 
    public int err_code { get; set; } 
    public string message { get; set; } 
    public Paging paging { get; set; } 
    public List<Content> contents { get; set; } 
} 
} 

的MainPage。 xaml.xs

using System; 
using System.Collections.Generic; 
using System.Net; 
using System.Windows; 
using Microsoft.Phone.Controls; 
using Microsoft.Phone.Reactive; 
using Newtonsoft.Json; 

namespace BelajarJson 
{ 
public partial class MainPage : PhoneApplicationPage 
{ 
    // Constructor 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 

    private void Load_Click(object sender, RoutedEventArgs e) 
    { 




     var w = new WebClient(); 
     Observable 
      .FromEvent<DownloadStringCompletedEventArgs>(w, "DownloadStringCompleted") 
      .Subscribe(r => 
      { 
       var deserialized = 
       JsonConvert.DeserializeObject<List<RootObject>>(r.EventArgs.Result); 
       PhoneList.ItemsSource = deserialized; 
      }); 
     w.DownloadStringAsync(
      new Uri("http://yumugee.com/json.txt")); 
    } 
} 
} 

我试过谷歌和从这里搜索相同的问题,但仍然没有运气。 你有一些建议如何解决这个问题?谢谢

回答

1

你确认你的结果实际上是一个对象数组,而不仅仅是一个对象。 List()的构造函数可以像IEnumerable那样获取数组,但不是单个对象。

JSON数组应该看起来像[{“name”:“value”},{“name”:“value”}]