c# - 反序列化 JSON 时出错

标签 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);

错误是:

The best overloaded method match for 'Newtonsoft.Json.JsonConvert.DeserializeObject(string)' has some invalid arguments.

无法更正此问题。谁能纠正这个问题?

非常非常感谢!

最佳答案

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; }
}

关于c# - 反序列化 JSON 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20773297/

相关文章:

java - JSONParser 在位置 0 处返回意外字符 ()

c# - 从 XML 创建实体

c# - 无法反序列化当前的 JSON 数组(例如 [1,2,3])。 C#,无法找出错误

c# - 如何反序列化 XML 中特定元素中属性的特定值?

c# - Assert.AreEqual 对 int 和 ulong 失败但对 long 和 uint 失败

c# - 使用 C# 访问二维数组时出错

c# - 如何终止 MVC4 中的 Razor 语句?

c# - 使用 Unity IoC 进行 MVC 集成测试

c# - 如何将带有 JSON、jQuery 的复杂对象数组发布到 ASP.NET MVC Controller ?

PHP 通过 'Key' => 'Value' 列回显所有表行 - 经验