首页 >后端开发 >C++ >C#构造如何有效地从API中估算复杂的JSON对象?

C#构造如何有效地从API中估算复杂的JSON对象?

Linda Hamilton
Linda Hamilton原创
2025-02-02 06:56:11894浏览

How Can C# Structs Efficiently Deserialize Complex JSON Objects from APIs?

利用C#结构体高效反序列化复杂JSON对象

当处理复杂的JSON对象时,仅仅反序列化成基本类型列表往往不够。为了有效处理嵌套结构,建议使用C#结构体。

问题: 从Facebook Graph API获取的JSON对象由于无效的原始对象而无法反序列化成对象列表。

解决方案:

  1. 定义结构体: 创建单独的结构体来表示外部和内部JSON对象。例如,考虑一个包含FacebookFriend结构体列表的Friends结构体:
<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>
  1. 反序列化JSON: 使用JavaScriptSerializer将JSON反序列化到Friends结构体:
<code class="language-csharp">Friends facebookFriends = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Friends>(result);</code>
  1. 访问内部对象: 现在可以通过迭代Friends结构体的data列表来访问内部对象:
<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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn