0

これはjson文字列からの私のC#クラスです:

public class Products

        {
            public string cid { get; set; }
            public string name { get; set; }

        }

        public class RootObject
        {
            public List <Products> product  { get;set; }
            public int success { get; set; }
        }

C# コード:

void myButton_Click(object sender,RoutedEventArgs e)
        {

          WebClient wc = new WebClient();
          wc.DownloadStringAsync(new Uri("http://ensignweb.com/sandbox/app/comment11.php"));
          wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
    }

    void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {

       string  MyJsonString = e.Result;
       var jsonObj = JObject.Parse(MyJsonString);



   Products products = JsonConvert.DeserializeObject<Products>(jsonObj.ToString());
   TestList.ItemsSource = products.name;

}

デバッグ中に O/pi を取得:

    string jsonObj= {
      "products": [
        {
          "cid": "1",
          "name": "bernard"
        },
        {
          "cid": "2",
          "name": "Vijay"
        },
        {
          "cid": "3",
          "name": "vikas_admin"
        },
        {
          "cid": "4",
          "name": "vikas_admin"
        },
        {
          "cid": "5",
          "name": "vikas_admin"
        },

      ],
      "success": 1
    }   

products:TestApp.TestNews.Products

Pls は、Json.net を使用して上記の文字列を逆シリアル化するのに役立ちます。ネットでリソースを見つけようとしましたが、役に立ちませんでした。リストボックスにソースが入力されず、null として表示されます。

更新: 提案されたコードを試した後の o/pi の取得:

TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
TestApp.TestNews+Product
4

1 に答える 1

0

よし、これを使おう

[DataContract]
public class Products
{
    [DataMember (Name = "cid")]
    public string Cid { get; set; }

    [DataMember(Name = "name")]
    public string Name { get; set; }
}

[DataContract]
public class RootObject
{
     [DataMember(Name = "products")]
    public List<Products> ProductList { get; set; }
}

  private void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        var json = e.Result;
        var products = JsonConvert.DeserializeObject<RootObject>(json);
        TestList.ItemsSource = products.ProductList; // this line was updated
    }

すべてがうまく機能します。よろしく

于 2013-04-23T08:58:30.173 に答える