在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中文网其他相关文章!