我试图反序列化的数据与本文中的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);