Unity JSON 處理:序列化與反序列化
本文解決Unity中使用Boomlagoon.JSON或MiniJSON庫處理JSON數據時,僅能讀取第一個對像或鍵值對的問題。
解決方案:
1. 使用Unity內置的JsonUtility:
Unity自帶的JsonUtility
API簡化了JSON的序列化和反序列化過程。
單一數據對象(非數組JSON):
序列化:
<code class="language-C#">Player playerInstance = new Player(); // 设置玩家属性 string playerToJson = JsonUtility.ToJson(playerInstance);</code>
反序列化:
<code class="language-C#">string jsonString = "{\"playerId\":\"1\",\"playerLoc\":\"Powai\"}"; Player player = JsonUtility.FromJson<Player>(jsonString);</code>
多個數據對象(數組JSON):
需要使用JsonHelper
輔助類(代碼見下文)。
序列化:
<code class="language-C#">Player[] playerInstance = new Player[2]; // 设置每个对象的玩家属性 string playerToJson = JsonHelper.ToJson(playerInstance, true);</code>
反序列化:
<code class="language-C#">string jsonString = "{\"Items\":[{\"playerId\":\"1\",\"playerLoc\":\"Powai\"},{\"playerId\":\"2\",\"playerLoc\":\"Andheri\"}]}"; Player[] player = JsonHelper.FromJson<Player>(jsonString);</code>
JsonHelper代碼: (請自行添加)
2. 無需類進行反序列化:
對於屬性為數字或以數字開頭的JSON(例如:"{15m\": 1740.01}"
),建議使用第三方庫,例如SimpleJSON。
3. 故障排除:
序列化問題:
[Serializable]
屬性。 { get; set; }
。 反序列化問題:
JsonHelper.FromJson
)。 [Serializable]
屬性。 其他替代方案:
通過以上方法,您可以有效地處理Unity項目中的JSON數據。 記得根據您的需求選擇合適的庫和方法。
以上是如何在Unity中序列化和應對JSON和JSON陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!