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

이걸 가져 와서 목록에 표시해야합니다. 내가 뭐하는 거지 것은json 배열 가져 오기, null 포인터 참조 예외

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

이 나는 ​​블로그 게시물을 읽고 만든}

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

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

입니다. 나는 NullReferenceException을 얻고 있습니다. 동일한 작업을 수행하기 위해 내가 잘못하고있는 다른 방법을 알려주십시오.

답변

0

먼저 JSON 데이터를 구문 분석하는 방법을 알아보십시오. 이것을 json 문자열로 간주하십시오. 당신의 브랜드 클래스는이

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

이 위의 코드처럼

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

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

는 JSON 데이터를 분석하는 방법에 대해 설명합니다. 이제 웹 서비스에서 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