2013-02-11 37 views
0
{"names":["name1","name2","name3","name4"]} 

我需要獲取它並將它們顯示在列表中。我做的是抓取json數組,空指針引用異常

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。 請告訴我我在做什麼錯誤或替代方式做同樣的事情。

回答

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); 
    } 
} 

檢查這個博客有任何其他疑惑:Parsing JSON in a Windows Phone Application

+0

謝謝..它解決了我的問題 – sanmeet 2013-02-11 09:30:49