ISerializationCallbackReceiver接口的使用(用于解析JSON文本)
来源:互联网 发布:scala与java的不同 编辑:程序博客网 时间:2024/06/08 06:21
最近学习UI框架中,需要解析JSON文本
{"infoList":[{"panelType": "MainMenuPanel","path": "UIPanel/MainMenuPanel"},{"panelType": "TaskPanel","path": "UIPanel/TaskPanel"},{"panelType": "KnapsackPanel","path": "UIPanel/KnapsackPanel"},{"panelType": "BattlePanel","path": "UIPanel/BattlePanel"},{"panelType": "SkillPanel","path": "UIPanel/SkillPanel"},{"panelType": "ShopPanel","path": "UIPanel/ShopPanel"},{"panelType": "SystemPanel","path": "UIPanel/SystemPanel"}]}
[Serializable]public class UIPanelInfo{ public UIPanelType panelType; public string path;}[Serializable]public class UIPanelInfoJson{ public List<UIPanelInfo> infoList;}其中,path为string类型,而panelType为Enum类型,使用JsonUtility进行解析时报错(我觉得应该是没有成功解析枚举类型)。
经过查找一些文档后,发现了一个挺好用的接口ISerializationCallbackReceiver,实现这个接口后有两个方法,一个是反序列化后,一个是序列化前
[Serializable]public class UIPanelInfo:ISerializationCallbackReceiver{ public UIPanelType panelType; public string path; public void OnAfterDeserialize() { throw new NotImplementedException(); } public void OnBeforeSerialize() { throw new NotImplementedException(); }}[Serializable]public class UIPanelInfoJson{ public List<UIPanelInfo> infoList;}对枚举类型UIPanelType进行修改,增加一个string类型,进行两种之前的转换
[Serializable]public class UIPanelInfo:ISerializationCallbackReceiver{ [NonSerialized] public UIPanelType panelType; public string path; public string panelTypeString; public void OnAfterDeserialize() { UIPanelType type = (UIPanelType) Enum.Parse(typeof(UIPanelType), panelTypeString); panelType = type; } public void OnBeforeSerialize() { }}[Serializable]public class UIPanelInfoJson{ public List<UIPanelInfo> infoList;}
用这种方法,可以成功解析JSON文本。
注:如果有某些错误,希望各路大神们批评指正
阅读全文
0 0
- ISerializationCallbackReceiver接口的使用(用于解析JSON文本)
- 解析json文本并使用handler完成三个控件文本内容的切换
- 使用json解析国家气象局(天气预报)接口数据
- 基于文本,优于轻量,用于交换数据——json解析(上篇)
- 基于文本,优于轻量,用于交换数据——json解析(下篇)
- cocos2dx 使用Json(用于游戏更新)
- cocos2dx 使用Json(用于游戏更新)
- httpurlconnection用于解析Json文件
- java解析json文本
- 用于解析Json数据的HttpUtils工具类
- 简单文本消息交互接口之使用json
- xgboost用于文本分类预测,java接口
- PHP调用接口以及JSON的解析
- Android开发--使用实体类解析JSON文本
- Json - 使用json-lib解析json字符串(火车票务返回的json串)的例子
- jackson json数据过滤,用于hibernate的懒加载对象级联关系的json解析
- Gson 解析json的使用
- json解析库的使用
- linux下忘记mysql密码
- RedisTemplate的使用说明(常用接口方法)
- 开源大数据周刊-第73期
- [TensorFlow学习手记] 5
- 口水话spring bean注入的执行过程
- ISerializationCallbackReceiver接口的使用(用于解析JSON文本)
- 源码-反转控制的理解
- git 上传项目到github(超级小白文)
- 卷积常用的几个矩阵
- Java流(Stream)简介
- 帧内预测的主函数框架分析
- oracle判断是否包含字符串的方法
- springboot 自定义注解+AOP 实现日志记录
- html drag拖拽事件