Unity JSON序列化

2019-11-06  本文已影响0人  86a262e62b0b

文档

一. 基本使用

[Serializable]
public class MyClass
{
    public int level;
    public float timeElapsed;
    public string playerName;
}
MyClass myObject = new MyClass();
myObject.level = 1;
myObject.timeElapsed = 47.5f;
myObject.playerName = "Dr Charles Francis";
string json = JsonUtility.ToJson(myObject);

=>

{"level":1,"timeElapsed":47.5,"playerName":"Dr Charles Francis"}

要将 JSON 转换回对象,请使用 JsonUtility.FromJson:

myObject = JsonUtility.FromJson<MyClass>(json);

二. 用 JSON 覆盖对象

也可以获取 JSON 数据并在已经创建的对象“之上”反序列化该数据,从而覆盖已存在的数据:

JsonUtility.FromJsonOverwrite(json, myObject);

三.支持的类型

四. 性能

  1. 基准测试表明,JsonUtility 要比流行的 .NET JSON 解决方案快得多(尽管功能比其中一些解决方案更少)

  2. GC 内存使用量为最低量:

  1. 允许使用后台线程中的 JsonUtility API。与任何多线程代码一样,在一个线程上序列化/反序列化对象时,应注意不要在另一个线程上访问或更改该对象。

五. 控制 ToJson() 的输出

六. 未提前知道类型的情况下使用 FromJson()

将 JSON 反序列化为包含“公共”字段的类或结构,然后使用这些字段的值来计算出您想要的实际类型。然后第二次反序列化为该类型。

上一篇 下一篇

猜你喜欢

热点阅读