Итак, у меня есть google spreedsheet, откуда я читаю некоторые данные. Так, например, мой первый столбец выглядит примерно так:Сбой приложения при чтении номера в строке
При изменении любого из строк в некоторую случайную строку, как «ABC» мои падения приложения:
Я также записал короткий видео, где я демонстрирую это в действии, и поместите свой метод в TRY-CATCH, чтобы приложение не разбилось. Это очень странно ... Возможно, это из-за переменной var где, если половина массива данных является целым числом, то она становится int или что еще может быть?
http://screencast.com/t/7OlDOzDZX70R
Если я, например, поместить все строки в некоторых строках «а», «б» и вставить номер между ними, приложение падает снова ...
Я просто не знаю, в чем проблема. Это также происходит в других рядах ...
отчет аварии
Вот мой код, который deserilazes в JSON, когда я получаю его от сети:
private async Task GetDataAsync()
{
//if (this._table.Count != 0) return;
this.Table.Clear();
var jsonObject = await DownloadSpreadsheet.GetJson();
for (int row = 0; row < jsonObject["rows"].Count(); row++)
{
Table table = new Table();
table.Day = jsonObject["rows"][row]["c"][0]["v"].ToString();
table.Month = jsonObject["rows"][row]["c"][5]["v"].ToString();
table.Year = jsonObject["rows"][row]["c"][6]["v"].ToString();
table.People = jsonObject["rows"][row]["c"][7]["v"].ToString();
this.Table.Add(table);
}
А вот модель, в которой все поля четко объявлены как STRING ...
public class Table
{
[DataMember(Name="id")]
public string Id { get; set; }
[DataMember(Name="day")]
public string Day { get; set; }
[DataMember(Name="month")]
public string Month { get; set; }
[DataMember(Name="year")]
public string Year { get; set; }
}
Здесь также метод для получения JSON:
public class DownloadSpreadsheet
{
// 1tJ64Y8hje0ui4ap9U33h3KWwpxT_-JuVMSZzxD2Er8k
private static readonly string spreadsheetKey = "1Ka-8bTSo4E7sNmsP41prSQqpjawooAvajnFnLi-jtCI";
private static string jsonUrlTemplate = "http://spreadsheets.google.com/a/google.com/tq?key={0}";
async public static Task<JObject> GetJson()
{
var url = string.Format(jsonUrlTemplate, spreadsheetKey);
var client = new HttpClient();
var response = await client.GetAsync(new Uri(url));
var rawResult = await response.Content.ReadAsStringAsync();
int start = rawResult.IndexOf("{", rawResult.IndexOf("{") + 1);
int end = rawResult.LastIndexOf("}");
String jsonResponse = rawResult.Substring(start, end - start);
return JObject.Parse(jsonResponse);
}
}
Чтобы ответить на ваш вопрос, было бы полезно знать: какая авария? Какое исключение выбрано? Какая строка, если вы знаете? –
Какая структура json будет возвращена на 'DownloadSpreadsheet.GetJson();' в которой строка сбой вашего приложения? –
Я добавил отчет о сбое – klanc