反序列化JSON时出错

时间:2013-12-25 13:29:55

标签: c# json deserialization

我得到的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(字符串)'   有一些无效的论点。

无法纠正此问题。任何人都可以纠正这个吗?

许多人提前感谢!

1 个答案:

答案 0 :(得分:2)

ResultCounts返回类型应为List<Resultcount>

更改

public ResultCount ResultCounts { get; set; }

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

在旁注中,您可以通过简单地粘贴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; }
}