Unity中JsonUtility嵌套类反序列化失败问题求助
Unity JsonUtility反序列化嵌套类为null的解决方法
问题场景
你提供的JSON数据:
{ "userName" : "player3322", "userLevel" : 23, "userInventory" : { "primaryHand" : "3493", "secondaryHand" : "none" } }
对应的C#类定义:
public class PlayerData{ public string userName; public int userLevel; public UserInventoryData userInventory; } public class UserInventoryData { public string primaryHand,secondaryHand; }
使用JsonUtility.FromJson反序列化后,PlayerData.userInventory始终为null,无法访问其内部内容。
解决方法
Unity的JsonUtility仅能序列化/反序列化标记了**[Serializable]特性**的自定义类,你的嵌套类UserInventoryData和主类PlayerData都缺少这个标记,导致JsonUtility无法识别嵌套对象的结构,最终反序列化时赋值为null。
修改后的类定义如下:
using System; [Serializable] public class PlayerData{ public string userName; public int userLevel; public UserInventoryData userInventory; } [Serializable] public class UserInventoryData { public string primaryHand, secondaryHand; }
修改后重新执行反序列化操作,userInventory就能正常被解析并赋值。
补充说明:如果字段使用private访问权限,还需额外添加[SerializeField]特性让JsonUtility能访问字段;你当前使用public字段,无需额外处理。
内容的提问来源于stack exchange,提问作者Tidominer
相关产品推荐
相关产品推荐

