2013-12-25 8 views
2

Я получаю выход JSON следующим образом:Ошибка при десериализации JSON

{"data": 
[ 
    { 
    "name":"followersQuery", 
    "fql_result_set":[{"subscriber_count":300}] 
    }, 
    { 
    "name":"likesQuery", 
    "fql_result_set":[{"like_count":0}] 
    } 
] 
} 

Это выход множественного fql запроса.

Я создал следующие классы для десериализации выхода:

public class ResultCount 
    { 
     [JsonProperty("subscriber_count")] 
     public int Followers { get; set; } 

     [JsonProperty("like_count")] 
     public int Likes { get; set; } 
    } 

    public class ResultItem 
    { 
     [JsonProperty("name")] 
     public string Name { get; set; } 

     [JsonProperty("fql_result_set")] 
     public ResultCount ResultCounts { get; set; } 
    } 

    public class FacebookData 
    { 
     public List<ResultItem> Items { get; set; } 
    } 

Я получаю ошибку при десериализации выхода в следующей строке:

JsonConvert.DeserializeObject<FacebookData>(myOutput); 

Ошибка является:

Наилучшее перегруженное соответствие метода для 'Newtonsoft.Json.JsonConvert.DeserializeObject (строка) ' имеет некоторые недопустимые аргументы.

Не в состоянии исправить это. Может кто-нибудь исправить это?

Большое спасибо!

ответ

2

ResultCounts тип возврата должен быть List<Resultcount>.

Изменить

public ResultCount ResultCounts { get; set; } 

в

public List<ResultCount> ResultCounts { get; set; } 

На заметка на поля вы можете получить класс structue просто вставив свой JSON здесь - Json2csharp. Он автоматически создаст структуру классов для вас. Он может использоваться для проверки вашей структуры. Сгенерированная структура была такой:

public class FqlResultSet 
{ 
    public int subscriber_count { get; set; } 
    public int? like_count { get; set; } 
} 

public class Datum 
{ 
    public string name { get; set; } 
    public List<FqlResultSet> fql_result_set { get; set; } 
} 

public class RootObject 
{ 
    public List<Datum> data { get; set; } 
} 
+1

Это сработало для меня. Спасибо большое :) –

+0

@Rohit Vats Спасибо! –

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