誰かがボタンをクリックしたときにJSONファイルを解析しようとしています。これにより、ボタンのコンテンツがJSONのデータに置き換えられます。
現在、データがnullのままであるという問題に直面しています。コードは次のとおりです。
private void Button1_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Button1.FontSize = 15;
Button1.Content = "Fetching...";
var client = new WebClient();
client.OpenReadCompleted +=
(s, eargs) =>
{
var serializer = new DataContractJsonSerializer(typeof(RadioRootObject));
if (eargs.Error != null)
{
if (eargs.Error.Message.Contains("NotFound"))
{
MessageBox.Show("Could not retrieve playlist", "Error", MessageBoxButton.OK);
Button1.Content = "Could not retrieve playlist";
}
else
{
MessageBox.Show("Could not retrieve playlist", "Error", MessageBoxButton.OK);
Button1.Content = "Could not retrieve playlist";
}
}
else
{
var root = (RadioRootObject)serializer.ReadObject(eargs.Result);
var songHistory = root.station3;
Button1.Content = songHistory.text;
}
};
var uri = new Uri("http://www.reignofcomputer.com/tmpsend/nowplaying.json");
client.OpenReadAsync(uri);
}
public class station1
{
public string station { get; set; }
public string title { get; set; }
public string artist { get; set; }
public string text { get; set; }
}
public class station2
{
public string station { get; set; }
public int listeners { get; set; }
public string title { get; set; }
public string artist { get; set; }
public string text { get; set; }
}
public class station3
{
public string station { get; set; }
public int listeners { get; set; }
public string title { get; set; }
public string artist { get; set; }
public string text { get; set; }
}
public class RadioRootObject
{
public station1 station1 { get; set; }
public station2 station2 { get; set; }
public station3 station3 { get; set; }
}
root
nullのsongHistory
ままであるため、NullReferenceExceptionがスローされます。
station1
およびは、およびstation2
で使用されますが、上記のコードには示されていません。これらは上記と同様です。Button2_Tap
Button3_Tap
Button1_Tap
DataContractJsonSerializerは、jsonオブジェクトからRadioRootObjectクラスのプロパティstation1へのプロパティ "1"を一致させることができないと言われていますが、どのように一致させるかはわかりません。
JSON自体のデータを変更できません。何か案は?