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