Test t = new Test(); string jsonStr = JsonUtility.ToJson(t); //序列化 t = JsonUtility.FromJson<Test>(jsonStr); //反序列化
注:
不能序列化Dictionary
类中的成员有其他类对象,需要在其他类加上[System.Serializable]
private 和 protected 成员需要加上[SerializeField]
无法存储null, 而是存储一个目标对象的默认值
无法直接读取数据集合
LitJson(第三方)
使用:将下载下来LitJson的src目录下的LitJson导入Unity即可
1 2 3 4 5
Test t = new Test(); string jsonStr = JsonMapper.ToJson(t); //序列化 JsonData data = JsonMapper.ToObject(jsonStr); //反序列化 print(data.name) Test data = JsonMapper.ToObject<Test>(jsonStr); //反序列化 推荐
Person p = new Person();//需要加上[System.Serializable] //内存流 using(MemoryStream ms = new MemoryStream()){ //2进制格式化程序 BinaryFormatter bf = new BinaryFormatter(); //生成二进制字节数组并存入内存流中 bf.Serialize(ms, p); //取出二进制字节数组并写入文件 byte[] bytes = ms.GetBuffer(); File.WriteAllBytes("path.txt", bytes); ms.Close(); }
//文件流 using(FileStream fs = new FileStream("path.txt", FileMode.Create, FileAccess.ReadWrite); ){ //2进制格式化程序 BinaryFormatter bf = new BinaryFormatter(); //反序列化 Person p = bf.Deserialize(fs) as Person; fs.Close(); }
//反序列化网络传输的二进制数据 using(MemoryStream ms = new MemoryStream(bytes)){ //2进制格式化程序 BinaryFormatter bf = new BinaryFormatter(); //反序列化 Person p = bf.Deserialize(fs) as Person; ms.Close(); }
int key = 2018; using(MemoryStream ms = new MemoryStream()){ //2进制格式化程序 BinaryFormatter bf = new BinaryFormatter(); //生成二进制字节数组并存入内存流中 bf.Serialize(ms, p); //取出二进制字节数组并写入文件 byte[] bytes = ms.GetBuffer(); for(int i=0; i<bytes.Length; i++){ bytes[i] ^= key; } File.WriteAllBytes("path.txt", bytes); ms.Close(); }
//反序列化二进制数据 for(int i=0; i<bytes.Length; i++){ bytes[i] ^= key; } using(MemoryStream ms = new MemoryStream(bytes)){ //2进制格式化程序 BinaryFormatter bf = new BinaryFormatter(); //反序列化 Person p = bf.Deserialize(fs) as Person; ms.Close(); }