查看: 42462|回复: 193

[在unity中制作] JSON序列化

  [复制链接]

3

主题

3

帖子

78

积分

vip会员

Rank: 1

积分
78
发表于 2016-7-13 19:20:30 | 显示全部楼层 |阅读模式
JSON序列化功能将对象与JSON格式这可能是有用的Web服务进行交互时,或是打包和解包的数据到一个基于文本的格式很容易。

在jsonutility类的信息,请参阅统一scriptrefjsonutility网页

简单的用法

JSON序列化功能是建立在一个概念的结构化的JSON,这意味着你描述变量是要创建一个类或结构存储在JSON数据。例如:

[化]
公共类
{
公共国际水平;
公众持股量值;
公共串接
这定义了一个普通的C #类包含三个变量—水平,值,和接-标记为可序列化,这是它与JSON序列化程序必要的工作。你可以创建一个实例吧:

MyClass myObject = new MyClass();
myObject.level = 1;
myObject.timeElapsed = 47.5f;
myObject.playerName = "Dr Charles Francis";
和序列化到JSON格式的利用jsonutility.tojson:

string json = JsonUtility.ToJson(myObject);
这将导致JSON包含字符串变量:

{“水平”:1,“值”:47.5,“接”:“查尔斯弗兰西斯”}
将JSON返回一个对象,使用jsonutility.fromjson:

myObject = JsonUtility.FromJson<MyClass>(json);
这将创建一个新实例类名设定值的时候使用JSON数据。如果JSON数据中包含的值不在地图领域类名然后,这些值将被忽略,如果JSON数据丢失的字段值类名,然后这些字段会被留在他们所构建的返回对象中的值。

JSON序列化程序目前不支持“非结构化”JSON工作(即导航和编辑JSON作为键-值对任意的树)。如果你需要这样做,你应该找一个更全面的JSON库。

覆盖对象以JSON

它也可能采取反序列化JSON数据和它在一个已经创建的对象,这已经是当前数据覆盖:

jsonutility fromjsonoverwrite(JSON,MyObject);
任何领域的对象的JSON不包含的值将保持不变。这种方法可以让你保持一个最低的配置对象复用先前创建的“补丁”,还故意用JSON对象覆盖这些文件只包含一个小的子集的领域。

请注意,JSON序列化API支持MonoBehaviour和scriptableobject子类以及普通结构/类。然而,当反序列化JSON到子类MonoBehaviour或scriptableobject,你必须使用fromjsonoverwrite;fromjson不支持,将抛出一个异常。

支持的类型

API支持任何MonoBehaviour子类,scriptableobject-子类或普通类/结构与[化]属性。对象在你通过送入处理标准统一串行,所以相同的规则和限制他们在督察;唯一的字段都会被序列化,和类型Dictionary不支持。

通过其他类型直接的API,例如原始类型或阵列,目前不支持。现在你要在这种类型的类或结构一些种类的。

只有在编辑器中,有一个平行的API—editorjsonutility这允许您将任何UnityEngine的对象。源都从JSON类型。这将生成JSON的包含对象的YAML表示相同的数据。

性能

基准测试显示jsonutility要比流行的速度明显加快。净JSON的解决方案(虽然比一些人少的特点)。

GC的内存使用量最少:

tojson(的)只有返回的字符串内存分配色谱。
fromjson()只有返回的对象分配色谱的记忆,以及任何子对象的需要(例如,如果你反序列化对象包含一个数组,然后GC内存将被分配给数组)。
fromjsonoverwrite()分配色谱的记忆只需写的领域(例如字符串和数组)。如果所有的字段被覆盖的JSON是值类型的,它应该不分配任何GC记忆。
使用jsonutility API从后台线程被允许.作为一个多线程的代码,你应该小心不要访问或修改一个线程对象的序列化/反序列化时,另一个。

控制输出()tojson of the

tojson漂亮的打印支持JSON输出。它默认是关闭的,你可以把它通过真正的作为第二个参数。

字段可以从输出略用[非序列化]属性。

使用fromjson()类型时,事先不知道时间

反序列化的JSON为类或结构中含有“普通”的字段,然后使用这些字段的值进行实际的类型你想要什么。然后将一次成型。

回复

使用道具 举报

0

主题

864

帖子

2860

积分

vip会员

Rank: 1

积分
2860
发表于 2016-7-13 19:32:34 | 显示全部楼层
好久没给力点的了。谢谢
回复 支持 反对

使用道具 举报

0

主题

876

帖子

2922

积分

vip会员

Rank: 1

积分
2922
发表于 2016-7-13 19:48:45 来自手机 | 显示全部楼层
我吭哧瘪肚 终于下载下来了,但是不会用- -
回复 支持 反对

使用道具 举报

0

主题

905

帖子

2970

积分

vip会员

Rank: 1

积分
2970
发表于 2016-7-13 20:27:45 来自手机 | 显示全部楼层
嗯,这个资源特别的好啊,赶紧下来收藏起来。
回复 支持 反对

使用道具 举报

0

主题

885

帖子

2867

积分

vip会员

Rank: 1

积分
2867
发表于 2016-7-13 21:02:28 来自手机 | 显示全部楼层
全部吗,谢谢啦
回复 支持 反对

使用道具 举报

0

主题

896

帖子

2937

积分

vip会员

Rank: 1

积分
2937
发表于 2016-7-13 21:48:15 | 显示全部楼层
哈哈  找i了好久
回复 支持 反对

使用道具 举报

0

主题

845

帖子

2783

积分

vip会员

Rank: 1

积分
2783
发表于 2016-7-13 22:09:34 来自手机 | 显示全部楼层
我来看看 这个怎么样
回复 支持 反对

使用道具 举报

0

主题

871

帖子

2828

积分

vip会员

Rank: 1

积分
2828
发表于 2016-7-13 22:38:05 | 显示全部楼层
一下这么多新发的好东东,谢谢分享
回复 支持 反对

使用道具 举报

0

主题

919

帖子

3032

积分

vip会员

Rank: 1

积分
3032
发表于 2016-7-13 23:06:03 来自手机 | 显示全部楼层
我现在有的是钱,我要下了!
回复 支持 反对

使用道具 举报

0

主题

922

帖子

3043

积分

vip会员

Rank: 1

积分
3043
发表于 2016-7-14 00:10:35 | 显示全部楼层
这个多少金币啊。
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部