Windows PhoneアプリのJSONファイルを解析しようとしていますが、現在のコードは次のとおりです。
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(RootObject));
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 songHistory = (station1)serializer.ReadObject(eargs.Result);
Button1.Content = songHistory.text;
}
};
var uri = new Uri("<JSONGOESHERE>");
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 RootObject
{
public station1 station1 { get; set; }
public station2 station2 { get; set; }
public station3 station3 { get; set; }
}
後で「station2」と「station3」についても同じテキストのフェッチが必要になるため、それらを残しました。
現在、これを回線で実行すると、次のエラーが発生します。
var songHistory = (station1)serializer.ReadObject(eargs.Result);
InvalidCastExceptionはユーザーコードによって処理されませんでしたタイプ「System.InvalidCastException」の例外がAPP.DLLで発生しましたが、ユーザーコードでは処理されませんでしたタイプ「RootObject」のオブジェクトをタイプ「station1」にキャストできません。
私はjson2csharpジェネレーターを使用して上記を作成したので、何が問題なのかわかりません。
どんな助けでも素晴らしいでしょう。