C# 反序列化Onedrive REST数据
我正在使用OneDrive,需要从服务器获取有关文件夹内容的信息。这是我正在处理的数据类型:C# 反序列化Onedrive REST数据,c#,json,onedrive,C#,Json,Onedrive,我正在使用OneDrive,需要从服务器获取有关文件夹内容的信息。这是我正在处理的数据类型: { "data": [ { "id": "folder.xxxx", "from": { "name": "john doe", "id": "xxxx" }, "name": "Files that are in a folder", "de
{
"data": [
{
"id": "folder.xxxx",
"from": {
"name": "john doe",
"id": "xxxx"
},
"name": "Files that are in a folder",
"description": "",
"parent_id": "folder.xxxx",
"size": 0,
"upload_location": "https://apis.live.net/v5.0/folder.xxxx/files/",
"comments_count": 0,
"comments_enabled": false,
"is_embeddable": true,
"count": 0,
"link": "xxxx",
"type": "folder",
"shared_with": {
"access": "Just me"
},
"created_time": "2014-03-06T18:48:16+0000",
"updated_time": "2014-03-06T18:48:16+0000",
"client_updated_time": "2014-03-06T18:48:16+0000"
}, {
"id": "file.xxxx",
(same as above for rest of data structure)
}, {
"id": "file.xxxx",
(Same as above for rest of data structure)
}
]
}
当对服务器执行不同的请求时,您只会返回(“id”:“folder.xxx”)信息块,我可以使用如下所示的类处理该数据:
[DataContract]
public class ResponseFolder
{
[DataMember(Name = "id")]
public string id { get; set; }
[DataMember(Name = "from")]
public from from { get; set; }
[DataMember(Name = "name")]
public string name { get; set; }
//etc.
以及处理类似结构的“from”等条目:
[DataContract]
public class from
{
public string name { get; set; }
public string id { get; set; }
}
我想我可以对顶部的数据请求执行相同的操作,因此有一个不适合我的类:
[DataContract]
public class FolderRequest
{
[DataMember(Name = "data")]
public ResponseFolder data { get; set; }
}
我试着在这一行中使用它:
FolderRequest = jss.Deserialize<FolderRequest>(json);
FolderRequest=jss.Deserialize(json);
但是FolderRequest在此之后为null。我也试过这样做
jss.Deserialize<List<ResponseFolder>>(json);
jss.Deserialize(json);
在谷歌搜索了如何处理json中的数组之后,这也不起作用
任何帮助都将不胜感激 看起来数据需要是一个数组:
[DataContract]
public class FolderRequest
{
[DataMember(Name = "data")]
public ResponseFolder[] data { get; set; }
}
你的完整模型是
public class From
{
public string name { get; set; }
public string id { get; set; }
}
public class SharedWith
{
public string access { get; set; }
}
public class ResponseFolder
{
public string id { get; set; }
public From from { get; set; }
public string name { get; set; }
public string description { get; set; }
public string parent_id { get; set; }
public int size { get; set; }
public string upload_location { get; set; }
public int comments_count { get; set; }
public bool comments_enabled { get; set; }
public bool is_embeddable { get; set; }
public int count { get; set; }
public string link { get; set; }
public string type { get; set; }
public SharedWith shared_with { get; set; }
public string created_time { get; set; }
public string updated_time { get; set; }
public string client_updated_time { get; set; }
}
public class FolderRequest
{
public List<ResponseFolder> data { get; set; }
}
来自的公共类
{
公共字符串名称{get;set;}
公共字符串id{get;set;}
}
与共享的公共类
{
公共字符串访问{get;set;}
}
公共类响应文件夹
{
公共字符串id{get;set;}
来自{get;set;}的公共
公共字符串名称{get;set;}
公共字符串说明{get;set;}
公共字符串父\u id{get;set;}
公共整数大小{get;set;}
公共字符串上载位置{get;set;}
public int comments_count{get;set;}
公共bool注释启用{get;set;}
公共布尔是可嵌入的{get;set;}
公共整数计数{get;set;}
公共字符串链接{get;set;}
公共字符串类型{get;set;}
与{get;set;}共享_的公共共享
创建的公共字符串\u time{get;set;}
公共字符串已更新_time{get;set;}
公共字符串客户端\u已更新\u时间{get;set;}
}
公共类FolderRequest
{
公共列表数据{get;set;}
}
您应该序列化为
var obj = new JavaScriptSerializer().Deserialize<FolderRequest>(DATA);
var obj=new JavaScriptSerializer()。反序列化(数据);
如果您同意使用Json.Net(),请尝试以下方法:
public class From
{
public string Name { get; set; }
public string Id { get; set; }
}
public class SharedWith
{
[JsonProperty(PropertyName = "access")]
public string AccessName { get; set; }
}
public class ResponseFolder
{
public string Id { get; set; }
public From From { get; set; }
public string Name { get; set; }
public string Description { get; set; }
[JsonProperty(PropertyName = "shared_with")]
public SharedWith SharedWith { get; set; }
}
public class RootObject
{
public List<ResponseFolder> data { get; set; }
}
来自的公共类
{
公共字符串名称{get;set;}
公共字符串Id{get;set;}
}
与共享的公共类
{
[JsonProperty(PropertyName=“access”)]
公共字符串AccessName{get;set;}
}
公共类响应文件夹
{
公共字符串Id{get;set;}
来自{get;set;}的公共
公共字符串名称{get;set;}
公共字符串说明{get;set;}
[JsonProperty(PropertyName=“与共享”)]
公共SharedWith SharedWith{get;set;}
}
公共类根对象
{
公共列表数据{get;set;}
}
然后进行反序列化:
var result = JsonConvert.DeserializeObject<RootObject>(json);
var result=JsonConvert.DeserializeObject(json);
希望这有帮助