0

ここからチュートリアルに従いました

しかし、独自のjsonで実装したい場合、エラーメッセージが表示されました

現在の JSON オブジェクト (例: {"name":"value"}) を型 'System.Collections.Generic.List`1[BelajarJson.RootObject]' に逆シリアル化できません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; }
    }
}

ページング.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"));
    }
}
}

ここから同じ問題をグーグルで検索しようとしましたが、まだ運がありません。この問題を解決するためのアドバイスはありますか?ありがとうございました

4

1 に答える 1

1

結果が実際には単一のオブジェクトではなく、オブジェクトの配列であることを確認しましたか? List() のコンストラクターは、配列のように IEnumerable を受け取ることができますが、単一のオブジェクトを受け取ることはできません。

JSON 配列は [{"name":"value"},{"name":"value"}] のようになります

于 2012-07-19T08:14:34.120 に答える