我试图反序列化的数据非常像这篇文章中的json>
Deserialize JSON Facebook feed using Gson,只有更多的对象,在容器内..而且我不使用“Gson”
我认为有些对象甚至有自己的容器嵌套在某处,但目前这不是问题,主要问题是我在反序列化到下面的类时遇到了问题。
public class Rootobject
{
public int found { get; set; }
public Post[] posts { get; set; }
public Meta meta { get; set; }
}
我理解来自API的json的布局,它是某种数组,在Json.net文档中,他们称之为DataSet ..我使用的是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是不确定的方式..任何建议?
答案 0 :(得分:1)
第一件事是帖子中的JSON不是有效的JSON字符串,因此无法进行desearlized。其次,我尝试纠正并纠正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; }
}
然后像你正在做的那样对它进行Desearlize
MyData data = JsonConvert.DeserializeObject<MyData>(stringData);