在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反序列化為數組。 附加說明:
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
類應該包含ToJson
和FromJson
方法以處理數組序列化和反序列化。 )
以上是如何使用C#序列化和逐序化JSON和JSON數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!