C# Json.net反序列化对象问题
我正在使用JSON.Net尝试反序列化来自facebook的一些响应。下面是我正在读取的数据的快照:C# Json.net反序列化对象问题,c#,json,json.net,C#,Json,Json.net,我正在使用JSON.Net尝试反序列化来自facebook的一些响应。下面是我正在读取的数据的快照: { "data": [ { "id": "123" }, { "id": "234" } ], "paging": { "cursors": { "before": "xxx", "after": "
{
"data": [
{
"id": "123"
},
{
"id": "234"
}
],
"paging": {
"cursors": {
"before": "xxx",
"after": "xxx"
},
"next": "xxx"
}
}
课程:
class jsonDeserialize
{
public List<ListDetail> ListDetail { get; set; }
}
public class DataList
{
public string id { get; set; }
}
public class Paging
{
public List<string> cursors { get; set; }
public string next { get; set; }
}
public class Cursors
{
public string before { get; set; }
public string after { get; set; }
}
public class ListDetail
{
public List<Cursors> Cursors { get; set; }
public List<Paging> Articles { get; set; }
public List<DataList> DataList { get; set; }
}
类jsonDeserialize
{
公共列表ListDetail{get;set;}
}
公共类数据列表
{
公共字符串id{get;set;}
}
公共类分页
{
公共列表游标{get;set;}
公共字符串next{get;set;}
}
公共类游标
{
{get;set;}之前的公共字符串
{get;set;}之后的公共字符串
}
公共类列表详细信息
{
公共列表游标{get;set;}
公共列表项目{get;set;}
公共列表数据列表{get;set;}
}
我使用以下代码来使用JSON.NET反序列化函数:
由于某些原因,结果返回null,请帮助我:(
var result=JsonConvert.DeserializeObject(jsonString);
修复您的类防御:
class jsonDeserialize
{
public List<DataList> data { get; set; }
public Paging paging { get; set; }
}
public class DataList
{
public string id { get; set; }
}
public class Paging
{
public Cursors cursors { get; set; }
public string next { get; set; }
}
public class Cursors
{
public string before { get; set; }
public string after { get; set; }
}
类jsonDeserialize
{
公共列表数据{get;set;}
公共分页{get;set;}
}
公共类数据列表
{
公共字符串id{get;set;}
}
公共类分页
{
公共游标游标{get;set;}
公共字符串next{get;set;}
}
公共类游标
{
{get;set;}之前的公共字符串
{get;set;}之后的公共字符串
}
jsonDeserialize
包含数据列表的列表,ListDetail
可以删除吗,cursors
不是数组,而是对象。Omg,我错过了facebook的JSON,并“解决”了相反的问题。不过,为了以防万一,我会把它保留在这里
首先,请注意,这里的反序列化代码必须看起来像var result=JsonConvert.DeserializeObject
(jsonString);
您的JSON与代码不对应。
如果您想反序列化为jsonDeserialize类,您的json必须是这样的
(密切关注[]
和{}
)
类jsonDeserialize
{
公共列表数据{get;set;}
公共分页{get;set;}
}
公共类数据列表
{
公共字符串id{get;set;}
}
公共类分页
{
公共游标游标{get;set;}
公共字符串next{get;set;}
}
公共类游标
{
{get;set;}之前的公共字符串
{get;set;}之后的公共字符串
}
var result=JsonConvert.DeserializeObject(jsonformat.Substring(0,jsonformat.Length));
使用它会给你写结果。因为数据和分页被视为属性,所以你需要初始化类JSONDESerialized中的那些属性,而不是列表使用游标,因为你在分页类中存储游标数据。谢谢
class jsonDeserialize
{
public List<DataList> data { get; set; }
public Paging paging { get; set; }
}
public class DataList
{
public string id { get; set; }
}
public class Paging
{
public Cursors cursors { get; set; }
public string next { get; set; }
}
public class Cursors
{
public string before { get; set; }
public string after { get; set; }
}
{
"ListDetail" :
[
{
"Cursors":
[
{
"before" : "value",
"after" : "value"
}
],
"Articles":
[
{
"Cursors":
[
"cursor1",
"cursor2"
],
"next" : "somenext"
}
],
"DataList":
[
{
"id" : "someid"
},
{
"id" : "someid2"
}
]
}
]
}
class jsonDeserialize
{
public List<DataList> data { get; set; }
public Paging paging { get; set; }
}
public class DataList
{
public string id { get; set; }
}
public class Paging
{
public Cursors cursors { get; set; }
public string next { get; set; }
}
public class Cursors
{
public string before { get; set; }
public string after { get; set; }
}
var result=JsonConvert.DeserializeObject<jsonDeserialize>(jsonformat.Substring(0,jsonformat.Length));