赞
踩
今天讲特别基础但是在混合开发中常用的数据传递,Json格式数据 的序列化和反序列化。我就以我做的3d音乐功能为例 定义: 1.基础类型
- public class Communication
- {
- public long id;
- public string data;
-
- public Communication(long id=0, string data=null)
- {
- this.id = id;
- this.data = data;
- }
- }
2.音乐类型
- [Serializable]
- public class MusicInfo
- {
- //localCoverPath:本地缓存的封面图片地址
- //netCoverPath:封面图片的网络地址
- //name:歌曲名
- //author:歌曲作者
- //state:歌曲播放状态,0为播放,1为暂停,如果只是单纯操作播放暂停,state之外其他字段可为空
-
- public string localCoverPath;
- public string netCoverPath;
- public string name;
- public string author;
- public int state;
- }
- private static bool TryParse<T>(string json, out T t)
- {
- try
- {
- var data = JsonConvert.DeserializeObject<T>(json);
- if (data != null)
- {
- t = data;
- return true;
- }
- }
- catch (Exception e)
- {
- Debug.LogWarning($"TryParse -> json:{json} | e:{e}");
- }
- t = default;
- return false;
- }
反序列化:
- public void SetMusicInfo(string dataJson)
- {
- if (!TryParse<Communication>(dataJson, out var communication))
- {
- var errMsg = "SetMusicInfo: Invalid json -> " + dataJson;
- Debug.Log(errMsg);
- CallBackToAndroid.RequestCallBack(false, -1, errMsg);
- return;
- }
-
- if (!TryParse<MusicInfo>(communication.data, out var musicInfo))
- {
- var errMsg = "SetMusicInfo: Invalid musicInfo -> " + dataJson;
- Debug.Log(errMsg);
- CallBackToAndroid.RequestCallBack(false, communication.id, errMsg);
- return;
- }
-
- var musicSoundController = FindObjectOfType<MusicSoundController>();
- if (musicSoundController == null)
- {
- var errMsg = "SetMusicInfo: musicSoundController not init -> " + dataJson;
- Debug.Log(errMsg);
- CallBackToAndroid.RequestCallBack(false, communication.id, errMsg);
- return;
- }
-
- Debug.Log("SetMusicInfo -> " + dataJson);
- musicSoundController.UpdateMusicInfo(musicInfo);
- CallBackToAndroid.RequestCallBack(true, communication.id, "");
- }
序列化:
- var info = new MusicInfo()
- {
- author = "",
- localCoverPath = "",
- name = "",
- netCoverPath = ""
- };
- var musicCommunication = new Communication()
- {
- id= 0,
- data = JsonUtility.ToJson(info)
- };
- JsonUtility.ToJson(musicCommunication);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。