0

我从这里跟着教程

但是当我想用自己的 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。

内容.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; }
    }
}

分页.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; }
}
}

根对象.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"));
    }
}
}

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

4

1 回答 1

1

您是否确认您的结果实际上是一个对象数组,而不仅仅是一个对象。List() 的构造函数可以采用 IEnumerable,如数组,但不能采用单个对象。

JSON 数组应该类似于 [{"name":"value"},{"name":"value"}]

于 2012-07-19T08:14:34.120 回答