我正在尝试反序列化一些 OneNote API 结果。下面是我的:
- 笔记本查询的示例结果
- 样本类
反序列化的代码(两次尝试 obj1 和 obj2
Content-Type: application/json X-CorrelationId: <GUID> Status: 200 OK { "@odata.context":"https://www.onenote.com/api/v1.0/$metadata#notebooks","value":[ { "isDefault":false, "userRole":"Contributor", "isShared":true, "sectionsUrl":"https://www.onenote.com/api/v1.0/notebooks/notebook ID/sections", "sectionGroupsUrl":"https://www.onenote.com/api/v1.0/notebooks/notebook ID/sectionGroups", "links":{ "oneNoteClientUrl":{ "href":"https:{client URL}" },"oneNoteWebUrl":{ "href":"https://{web URL}" } }, "id":"notebook ID", "name":"notebook name", "self":"https://www.onenote.com/api/v1.0/notebooks/notebook ID", "createdBy":"user name", "lastModifiedBy":"user name", "createdTime":"2013-10-05T10:57:00.683Z", "lastModifiedTime":"2014-01-28T18:49:00.47Z" },{ "isDefault":true, "userRole":"Owner", "isShared":false, "sectionsUrl":"https://www.onenote.com/api/v1.0/notebooks/notebook ID/sections", "sectionGroupsUrl":"https://www.onenote.com/api/v1.0/notebooks/notebook ID/sectionGroups", "links":{ "oneNoteClientUrl":{ "href":"https://{client URL}" },"oneNoteWebUrl":{ "href":"https://{web URL}" } }, "id":"notebook ID", "name":"notebook name", "self":"https://www.onenote.com/api/v1.0/notebooks/notebook ID", "createdBy":"user name", "lastModifiedBy":"user name", "createdTime":"2011-07-20T03:54:46.283Z", "lastModifiedTime":"2014-06-24T20:49:42.227Z" } ] } [DataContract] public class Notebooks { [DataMember] public bool isDefault { get; set; } [DataMember] public string userRole { get; set; } [DataMember] public string isShared { get; set; } [DataMember] public string sectionsUrl { get; set; } [DataMember] public string sectionGroupsUrl { get; set; } [DataMember] public string oneNoteWebUrl { get; set; } [DataMember] public string name { get; set; } [DataMember] public string self { get; set; } [DataMember] public string createdBy { get; set; } [DataMember] public string lastModifiedBy { get; set; } [DataMember] public string lastModifiedTime { get; set; } [DataMember] public string id { get; set; } [DataMember] public string createdTime { get; set; } }
// 从 Web 请求返回的示例 Web 字符串存储在此文本框中 string resultStr = resultTextBox.Text.ToString();
var obj1 = DeserializeJSon<List<Notebooks>>(resultStr); foreach (Notebooks nb in obj1) { string id = nb.ToString(); } DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<Notebooks>)); MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(resultStr)); var obj2 = (List<Notebooks>)ser.ReadObject(stream); foreach (Notebooks nb in obj2) { string id = nb.id.ToString(); } public static T DeserializeJSon<T>(string jsonString) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); T obj = (T)ser.ReadObject(stream); return obj; }