嗨,爲什麼我得到一個inalid演員異常?無效的演員異常,JSON,Windows手機
public class RootContainer2
{
[DataMember]
public string StopName { get; set; }
[DataMember]
public string StopId { get; set; }
[DataMember]
public string Stop { get; set; }
[DataMember]
public ObservableCollection<Stops> Stops { get; set; }
}
private void ContentPanel_Loaded(object sender, RoutedEventArgs e)
{
textRouteId.Text = this.NavigationContext.QueryString["name"];
string myvar = textRouteId.Text;
try
{
WebClient webClient = new WebClient();
Uri uri = new Uri("websiteurl");
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
webClient.OpenReadAsync(uri);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
DataContractJsonSerializer ser = null;
try
{
ser = new DataContractJsonSerializer(typeof(RootContainer2));
RootContainer2 rootContainer = ser.ReadObject(e.Result) as RootContainer2;
foreach (Stops em in rootContainer.Stops)
{
string df = em.StopName;
string dt = em.StopId;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
這是我試圖讀取的json輸出,但我得到一個無效的轉換異常。
{"RouteId": "1231", "RouteName":"1 Whitehawk - Mile Oak", "Stops": [ { "StopId":"6882", "StopName":"Swanborough Drive", "OperatorsCode4":"bridmpj", "Lat":"50.8326729229821", "Lng":"-0.103217996656901" } , { "StopId":"6883", "StopName":"Haybourne Road", "OperatorsCode4":"brimapm", "Lat":"50.8317788816436", "Lng":"-0.10486427645364671" } , { "StopId":"6884", "StopName":"Coolham Drive", "OperatorsCode4":"brijtwm", "Lat":"50.829695439856089", "Lng":"-0.10512229365031489" } , { "StopId":"6885", "StopName":"St Cuthmans Church", "OperatorsCode4":"briapdg", "Lat":"50.8283233642578", "Lng":"-0.104808002710342" } ,
加上stops.cs類:
public class Stops
{
public string StopId { get; set; }
public string StopName { get; set; }
}
編輯:
所以創造我自己的URL,然後測試數據後,它的東西做,我是URL給我想。只是做進一步的測試。
編輯2
如果我把數據轉換成文本文件和調試數據,它的工作原理,如果我做到以下幾點。
在進料結束時是這樣的:
「LNG」: 「 - 0.277833998203278」, 「」}]}
如果我刪除,和 「」,那麼它的工作原理。但我該如何阻止它首先到達那裏?
異常的*細節*是什麼? – 2012-04-02 10:51:41
當我調試它時,當它到達這一行的末尾: RootContainer2 rootContainer = ser.ReadObject(e.Result)as RootContainer2; 它直接結束並顯示錯誤消息,它只是 「InvalidCastException」 – 2012-04-02 11:28:21
這是因爲您只顯示異常的*消息*。您應該能夠獲得比這更多的信息,例如堆棧跟蹤。 – 2012-04-02 11:35:20