利用C#结构体高效反序列化复杂JSON对象
当处理复杂的JSON对象时,仅仅反序列化成基本类型列表往往不够。为了有效处理嵌套结构,建议使用C#结构体。
问题: 从Facebook Graph API获取的JSON对象由于无效的原始对象而无法反序列化成对象列表。
解决方案:
<code class="language-csharp">public class Friends { public List<FacebookFriend> data { get; set; } } public class FacebookFriend { public string id { get; set; } public string name { get; set; } }</code>
JavaScriptSerializer
将JSON反序列化到Friends结构体:<code class="language-csharp">Friends facebookFriends = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Friends>(result);</code>
<code class="language-csharp">foreach (var item in facebookFriends.data) { Console.WriteLine("id: {0}, name: {1}", item.id, item.name); }</code>
示例:
<code class="language-csharp">string json = @"{""data"":[{""id"":""518523721"",""name"":""ftyft""}, {""id"":""527032438"",""name"":""ftyftyf""}, {""id"":""527572047"",""name"":""ftgft""}, {""id"":""531141884"",""name"":""ftftft""}]}"; Friends facebookFriends = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Friends>(json); foreach (var item in facebookFriends.data) { Console.WriteLine("id: {0}, name: {1}", item.id, item.name); }</code>
输出:
<code>id: 518523721, name: ftyft id: 527032438, name: ftyftyf id: 527572047, name: ftgft id: 531141884, name: ftftft</code>
以上是C#构造如何有效地从API中估算复杂的JSON对象?的详细内容。更多信息请关注PHP中文网其他相关文章!