首頁 > 後端開發 > C++ > 如何使用C#序列化和逐序化JSON和JSON數組?

如何使用C#序列化和逐序化JSON和JSON數組?

Susan Sarandon
發布: 2025-02-03 04:26:13
原創
229 人瀏覽過

How to Serialize and Deserialize JSON and JSON Arrays in Unity using C#?

在Unity中使用C#序列化和反序列化JSON和JSON數組

問題:

您希望在Unity中使用C#序列化和反序列化JSON數據(包括JSON數組)。 Boomlagoon.JSON庫在反序列化列表時只檢索第一個對象。

解決方案:

Unity在5.3.3版本之後添加了JsonUtility到API中。此API允許對數據類型進行輕量級序列化和反序列化。

單個數據對象(非數組JSON)的序列化和反序列化

序列化:

  • 使用JsonUtility.ToJson(object obj);將對象轉換為JSON。
  • 對於格式化輸出,使用JsonUtility.ToJson(object obj, bool prettyPrint);

反序列化:

  • 使用JsonUtility.FromJson<T>(string json);將JSON反序列化為特定類型T。
  • 您也可以使用JsonUtility.FromJson(string json, Type type);反序列化為指定的類型。
  • 要覆蓋現有實例,請使用JsonUtility.FromJsonOverwrite(string json, object objectToOverwrite);

多個數據對象(數組JSON)的序列化和反序列化

要序列化和反序列化JSON數組,您需要一個輔助類,例如JsonHelper(在下面的代碼示例中提供)。

序列化:

  • 創建一個對像數組,並使用JsonHelper.ToJson(T[] array)將其轉換為JSON。
  • 對於格式化輸出,使用JsonHelper.ToJson(T[] array, bool prettyPrint)

反序列化:

  • 使用JsonHelper.FromJson<T>(string json)將JSON反序列化為數組。

附加說明:

  • Unity的JsonUtility本身不支持數組。
  • 要序列化或反序列化以數字或數字屬性開頭的JSON,請考慮使用SimpleJSON庫。
  • 從類成員中刪除get; set;以確保與JsonUtility兼容。

代碼示例:

序列化單個數據對象:

<code class="language-csharp">Player playerInstance = new Player();
playerInstance.playerId = "8484239823";
playerInstance.playerLoc = "Powai";
playerInstance.playerNick = "Random Nick";

// 转换为JSON
string playerToJson = JsonUtility.ToJson(playerInstance);
Debug.Log(playerToJson);</code>
登入後複製

反序列化單個數據對象:

<code class="language-csharp">string jsonString = "{"playerId":"8484239823","playerLoc":"Powai","playerNick":"Random Nick"}";
Player player = JsonUtility.FromJson<Player>(jsonString);
Debug.Log(player.playerLoc);</code>
登入後複製

序列化JSON數組:

<code class="language-csharp">Player[] playerInstance = new Player[2];

playerInstance[0].playerId = "8484239823";
playerInstance[0].playerLoc = "Powai";
playerInstance[0].playerNick = "Random Nick";

playerInstance[1].playerId = "512343283";
playerInstance[1].playerLoc = "User2";
playerInstance[1].playerNick = "Rand Nick 2";

// 转换为JSON
string playerToJson = JsonHelper.ToJson(playerInstance);
Debug.Log(playerToJson);</code>
登入後複製

反序列化JSON數組:

<code class="language-csharp">string jsonString = "... [player data] ...";
Player[] player = JsonHelper.FromJson<Player>(jsonString);
Debug.Log(player[0].playerLoc);
Debug.Log(player[1].playerLoc);</code>
登入後複製

(請注意,代碼示例中省略了JsonHelper類的實現,需要自行補充。 JsonHelper類應該包含ToJsonFromJson方法以處理數組序列化和反序列化。 )

以上是如何使用C#序列化和逐序化JSON和JSON數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板