Unity自带的SimpleJSon的简单使用
来源:互联网 发布:matlab编程第刘卫国 编辑:程序博客网 时间:2024/06/05 04:57
</pre><pre code_snippet_id="1601018" snippet_file_name="blog_20160307_1_6633309" name="code" class="csharp">public class MyObject{ public string name; public MyNewObject newOjbect; public san si;}<pre name="code" class="csharp"><pre name="code" class="csharp">[System.Serializable]//这个加上好点
<pre name="code" class="csharp">public class MyNewObject{ public int level; public san s;}public class san{ public int l = 333;}void Start () { MyObject myObject = new MyObject(); myObject.name = "雨松MOMO"; myObject.newOjbect = new MyNewObject() {level = 100 }; myObject.newOjbect.s = new san();myObject.si = new san();myObject.si.l = 444; string json = JsonUtility.ToJson(myObject); Debug.Log(json); json = JsonUtility.ToJson(myObject); Debug.Log(json); // myObject = JsonUtility.FromJson<MyObject>(json);//简单的反序列化。反序列化被执行一次后,json字段里的数据将被清除 JsonUtility.FromJsonOverwrite(json, myObject);//深度的反序列化。包含其他类的对象也会被赋值。 //请注意,JSON 序列化程序 API 支持 MonoBehaviour 和 ScriptableObject 的子类,// 以及普通的结构类。但是,当反 JSON 序列化到 MonoBehaviour 或 ScriptableObject 的子类// 则必须使用 FromJsonOverwrite; FromJson 不支持,并将引发异常。Debug.Log(myObject.newOjbect.s.l); Debug.Log(myObject.si.l);}
//private成员需要加上 [SerializeField]属性才能
SimpleJSon序列化List:
/// <summary> /// 允许序列化List。 /// </summary> /// <typeparam name="T">T必须要加上[System.Serializable]属性。否则不会被序列化</typeparam> [System.Serializable] public class Serialization<T> { [SerializeField]//强迫unity去序列化一个私有字段 List<T> target; /// <summary> ///返回创建的list /// </summary> /// <returns></returns> public List<T> ToList() { return target; } public Serialization(List<T> target) { this.target = target; } }//====准备测试的数据========//[System.Serializable] class A { public int a = 111; public B b = new B(); } [System.Serializable]<span style="font-family: Arial, Helvetica, sans-serif;">//仅仅只是这个属性不会被继承,他的子类如果也想被序列化也要加上这个属性</span> class B { public int b = 222; } [System.Serializable]<span style="font-family: Arial, Helvetica, sans-serif;">//如果子类添加了这个属性,他的父类则不用添加这个属性。</span> class C:B { public int c = 333; }//=====测试代码===========void Start () { Serialization<C> s1 = new Serialization<C>(new List<C>()); s1.ToList().Add(new C()); string js = JsonUtility.ToJson(s1); Debug.Log(js); List<C> lb = JsonUtility.FromJson<Serialization<C>>(js).ToList(); // Serialization<A> serB = new Serialization<A>(new List<A>()); // JsonUtility.FromJsonOverwrite(js, serB); Debug.Log(lb[0].b);//输出222 Debug.Log(lb[0].c);//输出333}
SimpleJSon序列化Dictionary:
userReg = new UserRegister(userData); Serialization<string, C> dy = new Serialization<string, C>(new Dictionary<string, C>()); dy.toDictionary().Add("c",new C()); string js = JsonUtility.ToJson(dy); Serialization<string, C> dy2 = JsonUtility.FromJson<Serialization<string, C>>(js); Debug.Log(dy2.toDictionary()["c"].c);
0 0
- Unity自带的SimpleJSon的简单使用
- simplejson的安装和使用
- anyjson与simplejson的使用
- 系统自带ImageLoader的简单使用
- 导入unity自带的包出问题
- Unity自带的寻路
- Unity自带的网络编程方式
- 模拟unity自带地形的grass
- 关于unity自带的雾
- 使用.NET自带的功能制作简单的注册码
- expect自带的程序的简单使用
- Android Studio自带的多渠道打包简单使用
- 去掉unity发布时自带的unity动画标志
- 使用Unity自带的解析工具完成Json数据的解析
- php自带的简单分页
- emacs 自带的简单入门教程
- emacs 自带的简单入门教程(TUTORIAL)
- unity自带GUI之控件的焦点获取
- leetcode(121)(122)(123)(188) Best Time to Buy and Sell Stock I/II/III/IV JAVA代码
- Android下的下拉列表框Spanner
- Android Fragment传递参数Fragment.setArguments(Bundle bundle)
- 【Java】面向对象思想以及类与对象的关系
- SpringMVC Controller 介绍
- Unity自带的SimpleJSon的简单使用
- centos7 菜鸟第一天--输入法在哪
- 有 1 、 2 、 3 、 4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- Android 图片模糊 性能总结
- 【讀書筆記】成为技术领导者
- HDU 3062 Party(2-SAT入门+学习)
- 浅谈web应用的负载均衡、集群、高可用(HA)解决方案
- 一元多项式的乘积与和
- Photoshop CS6 实例之用调整边缘扣取美女头发