2015-04-18 4 views
0

Хорошо, в первую очередь, ответ, вероятно, очень прост ... Но после 45 минут попыток и google'ing я решил спросить stackoverflow. Извините ... И спасибо за ваше время!Multi-Object JSON, «Невозможно десериализовать текущий объект JSON»


Поэтому у меня есть некоторые проблемы с тем, чтобы этот Json правильно разбирался. Я создал классы с http://json2csharp.com/ только он не говорит мне код для его анализа.

Мои текущие классы:

public class Representations 
{ 
    public string thumb { get; set; } 
    public string large { get; set; } 
    public string full { get; set; } 
} 

public class Search 
{ 
    public string id { get; set; } 
    public string file_name { get; set; } 
    public Representations representations { get; set; } 
} 

public class SearchQuery 
{ 
    public List<Search> search { get; set; } 
    public int total { get; set; } 
} 

JSON:

{ 
    "search": [ 
    { 
     "id": "0300", 
     "file_name": "0300.JPG", 
     "representations": { 
     "thumb": "thumb.jpg", 
     "large": "large.jpg", 
     "full": "0300.jpg" 
     }, 
    }, 
    { 
     "id": "0000", 
     "file_name": "0000.JPG", 
     "representations": { 
     "thumb": "thumb.jpg", 
     "large": "large.jpg", 
     "full": "0000.jpg" 
     }, 
    }, 
    { 
     "id": "0d00", 
     "file_name": "0d00.JPG", 
     "representations": { 
     "thumb": "thumb.jpg", 
     "large": "large.jpg", 
     "full": "0d00.jpg" 
     }, 
    } 
    ], 
    "total": 3 
} 

и код:

searchresults = JsonConvert.DeserializeObject<List<SearchQuery>>(JSONCode); 

Опять извиняюсь за хромой вопрос и спасибо за ваше время!

ответ

3

Вы должны десериализации к SearchQuery, не List<SearchQuery>:

SearchQuery result = JsonConvert.DeserializeObject<SearchQuery>(JSONCode); 

, а затем использовать search свойство для доступа к списку результатов поиска:

List<Search> searchResults = result.search; 
+0

глупую ошибку, спасибо большое! –

+0

Хотя список searchРезультаты не работают для меня. Но поиск searchResults. –

+0

Это зависит от того, с каким типом вы объявили переменную 'searchResults'. Из вашего кода это не совсем понятно. В моем примере я присвоил переменной 'searchResults' значение' List ', но вы можете использовать любые имена и типы, которые вы хотите. –