把对象转换为字节序列的过程称为对象的序列化。
把字节序列化恢复为对象过程称为对象的反序列化。
JSON格式的转换,是一大神给我说的,让我拿来存储数据库时对一些数据的处理,感觉特别好用。但是我并没有深入的去学习,这里只是最简单的应用,以下就是一个简单的示例程序。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Newtonsoft.Json; //需要下载Newtonsoft.Json.dll文件,放在Plugins文件夹下
using System.IO; public class json : MonoBehaviour { // Use this for initialization
void Start () {
writeTxt();//调用写入文本函数
StartCoroutine(testJson());//调用读取函数
} void writeTxt()
{
MapPosList maplist = new MapPosList();
maplist.points = new List<GetPointXY>();
maplist.points.Add(new GetPointXY(100, 78));
maplist.points.Add(new GetPointXY(54, 121));
maplist.points.Add(new GetPointXY(56, 845));
maplist.points.Add(new GetPointXY(221, 56));
maplist.points.Add(new GetPointXY(454, 23));
maplist.points.Add(new GetPointXY(10, 12));
maplist.points.Add(new GetPointXY(45, 65));
maplist.points.Add(new GetPointXY(898, 887));
//用json将一个对象转成一个字符串
string str = JsonConvert.SerializeObject(maplist); //下面将这个字符串写入本地文本
StreamWriter sw;
FileInfo t = new FileInfo("Assets/Streaming Assets/test.txt");
if (!t.Exists)
{
sw = t.CreateText();
}
else
{
sw = t.AppendText();
}
sw.Write(str);
sw.Close();
sw.Dispose();
}
IEnumerator testJson()
{
WWW w = new WWW("file:///D:/Test/Assets/Streaming Assets/test.txt");
yield return w; string str = w.text.Trim();
//通过json将字符串转换成一个对象
MapPosList data = JsonConvert.DeserializeObject<MapPosList>(str);
Debug.Log(data.points[0].xPosition);
yield return null;
} }
public class GetPointXY
{
public float xPosition;
public float yposition;
public GetPointXY(float x, float y)
{
this.xPosition = x;
this.yposition = y;
}
}
public class MapPosList
{
public List<GetPointXY> points;
}
这里最重要的就是JSON的两个函数:
JsonConvert.SerializeObject//将对象转换为字符串
JsonConvert.DeserializeObject//将字符串恢复为一个对象
这里备份一个Newtonsoft.Json.dll的下载链接,好像各版本都有:
http://yunpan.cn/cK5Ih7aMmy4ZH 访问密码 b6a4