0
{"names":["name1","name2","name3","name4"]}

これを取得してリストに表示する必要があります。私がしているのは

public class brand
{  public string Name
    { get; set; }
}

public class brands
{  public list<brand> Names
    { get; set; }

}

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

    private void getdata()
    {
        string uri = "URL";
        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(new Uri(uri));

        req.BeginGetResponse(new AsyncCallback(show), req);
    }

    private void show(IAsyncResult asynchronousResult)
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);

        StreamReader stream1 = new StreamReader(response.GetResponseStream());


         string s1 = stream1.ReadToEnd();
         var ser = new DataContractJsonSerializer(typeof(brands));
         var stream = new MemoryStream(Encoding.Unicode.GetBytes(s1));


          var bb = (brands)ser.ReadObject(stream);


          foreach (var ev in bb.Names)
            {
                textBlock1.Text = ev.Name.ToString();
            }
        }

これはブログ記事を読んで作ったものです。私は得てNullReferenceExceptionいます。私が間違っているところ、または同じことをする別の方法を教えてください。

4

1 に答える 1

0

まず、JSONデータを解析する方法を学びます。これをjson文字列と見なします。

String jsonData = @"{""names"":[""name1"",""name2"",""name3"",""name4""]}";

var brands = JsonConvert.DeserializeObject<Brands>(jsonData);
foreach (var item in brands.names)
        {
            Console.WriteLine(item);
        }

ブランドクラスは次のようになります

public class Brands
    {
        public List<string> names { get; set; }
    }

上記のコードは、jsonデータを解析する方法を説明しています。ここで、Webサービスからjsonデータをフェッチすることになります。これは、リクエストがPOSTリクエストではないため(コードから取得されているように見えます)、単純なWebCleintを使用できます。

void getData()
{
  WebClient webClient = new WebClient();
  webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);
  webClient.DownloadStringAsync(new Uri("url"));
}

void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{

    var brands = JsonConvert.DeserializeObject<Brands>(e.Result);
    foreach (var item in brands.names)
    {
        Console.WriteLine(item);
    }
}

その他の疑問については、このブログを確認してください:WindowsPhoneアプリケーションでのJSONの解析

于 2013-02-11T06:02:26.077 に答える