在Unity中使用JsonUtility序列化和反序列化JSON和JSON數組
如何使用C#在Unity中解析和處理JSON數據(單個對象和數組),特別是使用Boomlagoon.JSON、MiniJSON或JsonUtility?
從Unity 5.3.3版本開始,建議使用JsonUtility處理JSON數據,因為它性能高且簡單易用。
1. 單個數據對象的序列化和反序列化:
序列化:
<code class="language-csharp">Player playerInstance = new Player(); playerInstance.playerId = "8484239823"; playerInstance.playerLoc = "Powai"; playerInstance.playerNick = "Random Nick"; string playerToJson = JsonUtility.ToJson(playerInstance);</code>
輸出:
<code class="language-json">{"playerId":"8484239823","playerLoc":"Powai","playerNick":"Random Nick"}</code>
反序列化:
<code class="language-csharp">string jsonString = "{\"playerId\":\"8484239823\",\"playerLoc\":\"Powai\",\"playerNick\":\"Random Nick\"}"; Player player = JsonUtility.FromJson<Player>(jsonString);</code>
2. JSON數組的序列化和反序列化:
為了處理JSON數組,可以使用來自這個GitHub倉庫的輔助類:
輔助類 - JsonHelper.cs
<code class="language-csharp">public static class JsonHelper { public static T[] FromJson<T>(string json) { Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json); return wrapper.Items; } public static string ToJson<T>(T[] array) { Wrapper<T> wrapper = new Wrapper<T>(); wrapper.Items = array; return JsonUtility.ToJson(wrapper); } private class Wrapper<T> { public T[] Items; } }</code>
序列化:
<code class="language-csharp">Player[] players = new Player[2]; players[0] = new Player { playerId = "8484239823", playerLoc = "Powai", playerNick = "Random Nick" }; players[1] = new Player { playerId = "512343283", playerLoc = "User2", playerNick = "Rand Nick 2" }; string playersToJson = JsonHelper.ToJson(players);</code>
輸出:
<code class="language-json">{"Items":[{"playerId":"8484239823","playerLoc":"Powai","playerNick":"Random Nick"},{"playerId":"512343283","playerLoc":"User2","playerNick":"Rand Nick 2"}]}</code>
反序列化:
<code class="language-csharp">string jsonString = "{\"Items\":[{\"playerId\":\"8484239823\",\"playerLoc\":\"Powai\",\"playerNick\":\"Random Nick\"},{\"playerId\":\"512343283\",\"playerLoc\":\"User2\",\"playerNick\":\"Rand Nick 2\"}]}"; Player[] players = JsonHelper.FromJson<Player>(jsonString);</code>
[Serializable]
屬性,並且成員未定義為屬性(刪除{ get; set; }
)。 This revised output maintains the original image and its format, rephrases the text for improved flow and clarity, and uses consistent code formatting. The core information remains unchanged.
以上是如何使用JSSONUTINE序列化和逐漸化JSON和JSON陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!