反序列化json容器数组



我试图反序列化的数据与本文中的json非常相似>

使用Gson反序列化JSON Facebook提要,只在容器内使用更多对象。。我没有使用"Gson">

我认为有些对象甚至在某个地方嵌套了自己的容器,但这不是目前的问题,主要问题是我在反序列化到以下类时遇到了问题。。

public class Rootobject
{
public int found { get; set; }
public Post[] posts { get; set; }
public Meta meta { get; set; }
}

我理解API中的json的布局方式,它是某种数组,在json.net文档中,他们称之为数据集。。我正在使用Json.Net

我最近的反序列化尝试是;

List<Rootobject> data = JsonConvert.DeserializeObject<List<Rootobject>>(stringData);

但仍然数据为空,我得到;

附加信息:

无法反序列化当前JSON对象(例如{"name":"value"})进入类型'System.Collections.Generic.List`1[WebApplication17.Models.Rootobject]'因为该类型需要JSON数组(例如[1,2,3])来反序列化正确地

也许LINQ to JSON是一种方法,但还不确定。。有什么建议吗?

第一件事是post中的JSON不是有效的JSON字符串,因此无法对其进行反序列化。其次,我试图纠正JSON,使其成为有效的JSON,因此您的JSON看起来像

{
"data": [
{
"id": "105458566194298_411506355589516",
"message": "...",
"type": "status",
"created_time": "2012-11-25T17:26:41+0000",
"updated_time": "2012-11-25T17:26:41+0000",
"comments": {
"count": 0
}
},
{
"id": "105458566194298_411506355589516",
"message": "...",
"type": "status",
"created_time": "2012-11-25T17:26:41+0000",
"updated_time": "2012-11-25T17:26:41+0000",
"comments": {
"count": 0
}
}
]
}

所以Classes结构类似于

public class Comments
{
public int count { get; set; }
}
public class Datum
{
public string id { get; set; }
public string message { get; set; }
public string type { get; set; }
public DateTime created_time { get; set; }
public DateTime updated_time { get; set; }
public Comments comments { get; set; }
}
public class MyData
{
public List<Datum> data { get; set; }
}

然后像你在做一样正常地去伯爵化

MyData data = JsonConvert.DeserializeObject<MyData>(stringData);

相关内容

  • 没有找到相关文章

最新更新