首頁 >後端開發 >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