2013-05-16 3 views
0

Я делаю образец для разбора Json в телефоне Windows. Я использую Json.Net (json.codeplex.com/releases/view/78509) для анализа строки ответа. Но я получаю исключение при разборе. Исключением является «Невозможно десериализовать массив JSON в тип« System.String ». Я отправляю свой код ниже.JSON разбор в windows phone возвращает исключение

JSON ответ я получаю

[{ "среда": [ "194 мин"], "рейтинг": 7,6, "жанры": [ "Драма", "Романтика"], «рейтинг»: «PG_13», «язык»: [«Английский», «Французский», «Немецкий», «Шведский», «Итальянский», «Русский»), «Название»: «Титаник», «Съемки»: «Санта-Кларита, Калифорния, США», «Плакат»: «http://ia.media-imdb.com/images/M/[email protected]@._V1._SY317_CR0,0,214,317_.jpg», «imdb_url»: «http://www.imdb.com/title/tt0120338/», «писатели»: [«Джеймс Кэмерон»], «imdb_id»: «tt0120338», «директора»: [" Джеймс Кэмерон »],« rating_count »: 426376,« актеры »: [« Леонардо Ди Каприо »,« Кейт Уинслет »,« Билли Зейн »,« Кэти Бейтс »,« Фрэнсис Фишер »,« Глория Стюарт »,« Билл Пакстон », , "Бернард Хилл", "Дэвид Уорнер", "Вик «Гарвар», «Джонатан Хайд», «Сьюзи Амис», «Льюис Абернати», «Николас Касконе», «Анатолий М. Сагалевич»], «plot_simple»: «Семнадцатилетний аристократ, ожидающий женитьбы на богатый истец ее матери, влюбляется в своего рода, но плохой художник на борту роскошной злополучной RMS «Титаник»., «Год»: 1997, «страна»: [«США»], «тип»: «M», «release_date»: 19980403, «also_known_as»: [«Титаник в 3D»]}

И код парсинг

private void ParseResult(string input) 
{ 
    var root = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject1[]>(input);// here getting the exception "Cannot deserialize JSON array into type 'System.String" 
} 

класс объект

public class RootObject1 
{ 
    public string runtime { get; set; } 
    public int rating { get; set; } 
    public string rated { get; set; } 
    public string title { get; set; } 
    public string poster { get; set; } 
    public string imdb_url { get; set; } 
    public string writers { get; set; } 
    public string imdb_id { get; set; } 

} 

Спасибо.

ответ

2

Ну, ваш объект не соответствует входу. «среда» и «писатели» поля являются массивы строк и рейтинг не является целым числом, поэтому правильный объект должен быть что-то вроде:

public class RootObject1 
    { 
     public string[] runtime { get; set; } 
     public float rating { get; set; } 
     public string rated { get; set; } 
     public string title { get; set; } 
     public string poster { get; set; } 
     public string imdb_url { get; set; } 
     public string[] writers { get; set; } 
     public string imdb_id { get; set; } 
    } 
+0

Спасибо. Теперь он решил. :) – Arun

Смежные вопросы