2015-01-23 7 views
-2

У меня проблема с большим количеством синтаксического анализа JSON в C# в Windows Phone 8.Parsing Json C#

Приложение закрывается, когда я пытаюсь выполнить эту часть кода. Проблема добавляется, когда код C# десериализует json.

См. Ниже код: C# (десериализация + класс) и результат JSON.

Спасибо за ваши ответы.

public partial class MyGrades : PhoneApplicationPage 
{ 
    string token = string.Empty; 
    string mail = string.Empty; 


    public class MyGradesJson 
    { 
     [JsonProperty("periods")] 
     public Periods periods { get; set; } 
    } 

    public class Periods 
    { 
     [JsonProperty("period")] 
     public List<Perioddata> perioddata { get; set; } 
    } 

    public class Perioddata 
    { 
     [JsonProperty("period")] 
     public Period period { get; set; } 
    // [JsonProperty("name")] 
    // public List disciplines { get; set; } 
    } 

    public class Period 
    { 
     [JsonProperty("id")] 
     public int id { get; set; } 
     [JsonProperty("name")] 
     public string name { get; set; } 
     [JsonProperty("start_date")] 
     public string start_date { get; set; } 
     [JsonProperty("end_date")] 
     public string end_date { get; set; } 
    } 

    HttpResponseMessage response = await httpClient.SendAsync(requestMessage); 
    string responseAsString = await response.Content.ReadAsStringAsync(); 
    var resJson = JsonConvert.DeserializeObject<Periods>(responseAsString); 
} 

Вот Json ответ:

{ 
"periods":[ 
{ 
"period":{ 
"id":1, 
"name":"Year 1", 
"start_date":"2000-01-01", 
"end_date":"2001-06-30" 
}, 
"disciplines":[ 
{ 
"discipline":{ 
"id":6, 
"name":"Potions" 
}, 
"grades":[ 
{ 
"id":11, 
"note":2, 
"coefficient":2, 
"assessment":"yolo", 
"teacher":{ 
"id":2, 
"user_id":4, 
"login":"snape_se", 
"name":"Snape, Severus" 
} 
}, 
{ 
"id":15, 
"note":10, 
"coefficient":1, 
"assessment":"test", 
"teacher":{ 
"id":2, 
"user_id":4, 
"login":"snape_se", 
"name":"Snape, Severus" 
     } 
    } 
    ] 
    } 
    ] 
    } 
    ] 
} 
+1

«application close»: что показывает ваш глобальный обработчик исключений? (I вы не установили одно, тогда сделайте это первым.) В противном случае необработанные исключения могут быть подобраны с помощью отладчика. Пока у вас нет подробностей об исключении, вы теряете время. – Richard

+0

Я много раз пытался показать консоль отладчика, но не смог достичь своей цели. – JohnnyJohn

+0

VS имеет различные варианты. 1. Проверьте окно вывода для исключения, а затем используйте Debug | Исключение для разрыва при его броске. 2. См. Http://stackoverflow.com/q/793100/67392, чтобы установить глобальный обработчик. 3. В пуле потоков окружайте свой код блоком try/catch (и 'Debugger.Break()' является полезным методом). – Richard

ответ

1

Я думаю, что ваше приложение разбито, потому что ваш есть null в вашем resJson. JSON, который вы предоставили, не будет десериализован в экземпляр объекта Perods. Попробуйте создать классы C# из JSON. Если эта функция недоступна в вашей версии VS, попробуйте использовать онлайн-инструменты. Например, http://json2csharp.com/