2012-01-23 10 views
2

私のアプリケーションでWebクライアントを使用して取得したJSONデータを解析して表示しようとしています。ここで私はそれは、foreachループになったとき、私は今とNullReferenceExceptionを取得していますWP7でWebサービスからJSONデータを表示

{"metadata":{"page":1,"perPage":23,"count":23},"results":[{"id":9,"name":"Breaks","slug":"breaks","subgenres":[]},{"id":10,"name":"Chill Out","slug":"chill-out","subgenres":[]},{"id":12,"name":"Deep House","slug":"deep-house","subgenres":[]},{"id":16,"name":"DJ Tools","slug":"dj-tools","subgenres":[]},{"id":1,"name":"Drum & Bass","slug":"drum-and-bass","subgenres":[]},{"id":18,"name":"Dubstep","slug":"dubstep","subgenres":[]},{"id":17,"name":"Electro House","slug":"electro-house","subgenres":[]},{"id":3,"name":"Electronica","slug":"electronica","subgenres":[]},{"id":40,"name":"Funk \/ R&B","slug":"funk-r-and-b","subgenres":[]},{"id":49,"name":"Glitch Hop","slug":"glitch-hop","subgenres":[]},{"id":8,"name":"Hard Dance","slug":"hard-dance","subgenres":[]},{"id":2,"name":"Hardcore \/ Hard Techno","slug":"hardcore-hard-techno","subgenres":[]},{"id":38,"name":"Hip-Hop","slug":"hip-hop","subgenres":[]},{"id":5,"name":"House","slug":"house","subgenres":[]},{"id":37,"name":"Indie Dance \/ Nu Disco","slug":"indie-dance-nu-disco","subgenres":[]},{"id":14,"name":"Minimal","slug":"minimal","subgenres":[]},{"id":39,"name":"Pop \/ Rock","slug":"pop-rock","subgenres":[]},{"id":15,"name":"Progressive House","slug":"progressive-house","subgenres":[]},{"id":13,"name":"Psy-Trance","slug":"psy-trance","subgenres":[]},{"id":41,"name":"Reggae \/ Dub","slug":"reggae-dub","subgenres":[]},{"id":11,"name":"Tech House","slug":"tech-house","subgenres":[]},{"id":6,"name":"Techno","slug":"techno","subgenres":[]},{"id":7,"name":"Trance","slug":"trance","subgenres":[]}]} 

UPDATE

を表示したいJSON文字列です。何らかの理由で「データ」を認識しません

// Deserialize the Data 
    void beatportTest_GetDataCompleted(object sender, OpenReadCompletedEventArgs e) 
    { 
     DataContractJsonSerializer serializer = null; 

     try 
     { 
      serializer = new DataContractJsonSerializer(typeof(ObservableCollection<Result>)); 
      ObservableCollection<Result> data = serializer.ReadObject(e.Result) as ObservableCollection<Result>; 

      // foreach loop to display data 
      foreach (Result genre in data) 
      { 
       string name = genre.name; 
       listGenres.Items.Add(name); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

ここは私のクラスです。

public class Genres 
    { 
     public Metadata metadata { get; set; } 
     public List<Result> results { get; set; } 
    } 

    public class Metadata 
    { 
     public int page { get; set; } 
     public int perPage { get; set; } 
     public int count { get; set; } 
    } 

    public class Result 
    { 
     public int id { get; set; } 
     public string name { get; set; } 
     public string slug { get; set; } 
     // public List<object> subgenres { get; set; } 
    } 

私は 『名前』フィールドを使用して、すべてのジャンルのテキストブロックを表示するために行う必要がある何をL.Bの更新クラスののオフに行きますか?ここに私のxamlがあります。

 <controls:PanoramaItem x:Name="genres" Header="genres"> 
      <!--Single line list--> 
      <Grid 
       <ListBox x:Name="listGenres" Margin="0,95,0,0"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <StackPanel Width="432" Height="78"> 
           <TextBlock Text="???" Style="{StaticResource PhoneTextExtraLargeStyle}" />          
          </StackPanel> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox>  
      </Grid>   
     </controls:PanoramaItem> 

もう一度おねがいします。

答えて

0

は、ここで私はあなたのJSON文字列の助けを

public class Genres 
{ 
    public Metadata metadata; 
    public Result[] results; 
} 

public class Metadata 
{ 
    public int page; 
    public int perPage; 
    public int count; 
} 

public class Result 
{ 
    public int id; 
    public string name; 
    public string slug; 
    //public subgenre[] subgenres; 
} 


DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Genres)); 
Genres data = serializer.ReadObject(e.Result) as Genres; 
+0

感謝をデシリアライズするために使用されるクラスの定義です!私はリストボックスを使ってすべてのジャンルを表示しようとしています。上記の更新を参照してください。 – nos9

関連する問題