using System.Collections.Generic; using System.IO; using UnityEngine; using System.Linq; using System; public static class FileHandler { public static void SaveToJSON(List toSave, string filename) { Debug.Log(GetPath(filename)); string content = JsonHelper.ToJson(toSave.ToArray()); WriteFile(GetPath(filename), content); } public static List ReadFromJSON(string filename) { string content = ReadFile(GetPath(filename)); if (string.IsNullOrEmpty(content) || content == "{}") { return new List(); } List res = JsonHelper.FromJson(content).ToList(); return res; } private static string GetPath(string filename) { return Application.persistentDataPath + "/" + filename; } private static void WriteFile(string path, string content) { FileStream fileStream = new FileStream(path, FileMode.Create); using (StreamWriter writer = new StreamWriter(fileStream)) { writer.Write(content); } } private static string ReadFile(string path) { if (File.Exists(path)) { using (StreamReader reader = new StreamReader(path)) { string content = reader.ReadToEnd(); return content; } } return ""; } } public static class JsonHelper { public static T[] FromJson(string json) { Wrapper wrapper = JsonUtility.FromJson>(json); return wrapper.Items; } public static string ToJson(T[] array) { Wrapper wrapper = new Wrapper(); wrapper.Items = array; return JsonUtility.ToJson(wrapper); } public static string ToJson(T[] array, bool prettyPrint) { Wrapper wrapper = new Wrapper(); wrapper.Items = array; return JsonUtility.ToJson(wrapper, prettyPrint); } [Serializable] private class Wrapper { public T[] Items; } } /*using System.Collections.Generic; using System.IO; using UnityEngine; public static class FileHandler { public static void SaveToJSON(List dataList, string fileName) { string json = JsonUtility.ToJson(new Wrapper { list = dataList }, true); string path = Path.Combine(Application.persistentDataPath, fileName); File.WriteAllText(path, json); } public static List ReadFromJSON(string fileName) { string path = Path.Combine(Application.persistentDataPath, fileName); if (!File.Exists(path)) return new List(); string json = File.ReadAllText(path); Wrapper wrapper = JsonUtility.FromJson>(json); return wrapper.list ?? new List(); } [System.Serializable] private class Wrapper { public List list; } } /* using System.Collections.Generic; using System.IO; using UnityEngine; using System.Linq; using System; public static class FileHandler { public static void SaveToJSON(List toSave, string filename) { Debug.Log (GetPath (filename)); string content = JsonHelper.ToJson(toSave.ToArray()); WriteFile(GetPath(filename), content); } public static void SaveToJSON(T toSave, string filename) { string content = JsonUtility.ToJson (toSave); WriteFile(GetPath(filename), content); } public static List ReadListFromJSON(string filename) { string content = ReadFile(GetPath(filename)); if (string.IsNullOrEmpty(content) || content == "{}") { return new List(); } List res = JsonHelper.FromJson(content).ToList(); return res; } public static T ReadFromJSON(string filename) { string content = ReadFile(GetPath(filename)); if (string.IsNullOrEmpty(content) || content == "{}") { return default(T); } T res = JsonUtility.FromJson(content); return res; } private static string GetPath(string filename) { return Application.persistentDataPath + "/" + filename; } private static void WriteFile(string path, string content) { FileStream fileStream = new FileStream(path, FileMode.Create); using (StreamWriter writer = new StreamWriter(fileStream)) { writer.Write(content); } } private static string ReadFile(string path) { if (File.Exists (path)) { using (StreamReader reader = new StreamReader (path)) { string content = reader.ReadToEnd(); return content; } } return ""; } } public static class JsonHelper { public static T[] FromJson(string json) { Wrapper wrapper = JsonUtility.FromJson>(json); return wrapper.Items; } public static string ToJson(T[] array) { Wrapper wrapper = new Wrapper(); wrapper.Items = array; return JsonUtility.ToJson(wrapper); } public static string ToJson(T[] array, bool prettyPrint) { Wrapper wrapper = new Wrapper(); wrapper.Items = array; return JsonUtility.ToJson(wrapper, prettyPrint); } [Serializable] private class Wrapper { public T[] Items; } } */