【JSON文件】
1、保存文件(序列化),將程序對象保存到本地
//程序對象類
public class Paths
{
public string Name;
public List<Vector3> position;
public List<Vector3> rotation;
}
Paths paths;
/// <summary>
/// 初始化路徑類
/// </summary>
void InitPaths()
{
paths = new Paths();
paths.Name = "這是一個測試";
paths.position = InputData.listPosition;
paths.rotation = InputData.listRotation;
}
/// <summary>
/// 保存json
/// </summary>
/// <param name="pathName"></param>
//private void SaveJson(string pathName)
private void SaveJson()
{
//string savePath = @"C:\Users\T01015\Desktop\Test01.json";
//string savePath = @"D:\AutoPath";
if (!Directory.Exists(savePath))
{
//文件夾不存在時自動創建文件夾
Directory.CreateDirectory(savePath);
}
InitPaths();
DirectoryInfo dir = new DirectoryInfo(savePath);
string json = JsonUtility.ToJson(paths);
File.WriteAllText(savePath + @"\" + "方案" + dir.GetFiles().Length + ".json", json, Encoding.UTF8);
print("保存的地址:" + savePath);
}
2、讀取文件(反序列化),將文件轉換爲對象供程序使用
void LoadJson(string txtName)
{
//清除場景路線圖
for (int i = 0; i < pointPoll.childCount; i++)
{
Destroy(pointPoll.GetChild(i).gameObject);
}
string str = File.ReadAllText(savePath + @"\" + txtName + ".json" , Encoding.Default);
paths = JsonUtility.FromJson<Paths>(str);//解析json
print(paths.Name);
foreach (Vector3 item in paths.position)
{
print(item.x+","+item.y+","+item.z);
}
}
坑點:如有創建集合對象類,那麼該對象類要標記[Serializable],否則解析不到內容。例如:
// Json解析爲該對象
public class Response
{
public List<Student> list;
}
[Serializable]
public class Student
{
public int id;
public string name;
}