2013-02-11 34 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