记录一下使用 JsonUtility 遇到的坑.
点击阅读Unity3D的JsonUtility使用
记录一下使用 JsonUtility 遇到的坑.
1. 类或字段必须是可序列化的
- class 必须是 public 或者带[Serializable]的 Attribute.
- field 必须是 public 或带[SerializeField]的 Attribute.
[SerializeField]属性, 有 UnityEngine 提供, 表示序列化时需要强制序列化这个字段.
1
2
3
4
5
6
7
8
[Serializable]
internal class CfgBuild
{
public int Id;
public string Name;
[SerializeField]
private int Age;
}
2. 不支持解析 Json 的 Array
1
2
3
4
[
{ "ID": 1, "Name": "n1" },
{ "ID": 2, "Name": "n2" }
]
上面的 JSON 会直接反序列化失败. 但是支持 JSON 中包含 Array, 如下所示:
1
2
3
4
5
6
{
"list": [
{ "ID": 1, "Name": "n1" },
{ "ID": 2, "Name": "n2" }
]
}
目前笔者搜索的解决方案也是在外部封装一层.
3. 不支持 get 和 set
1
2
// get和set不支持
// public int ret { get; set; }
不会报错,不影响代码执行。但是会导致反序列化后的bean没有赋值.
4. 其他
笔者使用还比较少, 没有详细去处理异常的状态. 扩展信息可以从参考资料中查看
5. 参考资料
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 TinyZ Zzh (包含链接: https://tinyzzh.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。 如有任何疑问,请 与我联系 (tinyzzh815@gmail.com) 。
评论