我正在尝试为 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 在 APP.DLL 中发生“System.InvalidCastException”类型的异常,但未在用户代码中处理 无法将“RootObject”类型的对象转换为“station1”类型。
我已经使用 json2csharp 生成器来创建上述内容,所以我不确定出了什么问题。
任何帮助都是极好的。