记得先引用litjson的dll
然后就直接贴代码吧
using UnityEngine;
using LitJson;
using System.IO;
public static class JsonControl{
#region Json写入
/// <summary>
/// 初始化
/// </summary>
/// <param name="gameData"></param>
public static void SaveInitJson<T>(this T gameData)
{
string filePath = Application.persistentDataPath + "/Data.dat";
StreamWriter sw = new StreamWriter(filePath);
string text = JsonMapper.ToJson(gameData);
sw.Write(text);
sw.Close();
Debug.Log("Data.dat 初始化成功");
}
/// <summary>
/// 保存m_JsonData数据
/// </summary>
/// <param name="gameData">保存的数据类</param>
/// <param name="filePath">文件路径</param>
public static void SaveJson<T>(this T gameData, string filePath)
{
StreamWriter sw = new StreamWriter(Application.dataPath + "/" + filePath);
string text = JsonMapper.ToJson(gameData);
sw.Write(text);
sw.Close();
Debug.Log("数据保存成功 : " + filePath);
}
/// <summary>
/// 保存m_JsonData数据为默认文件路径/Data.dat
/// </summary>
/// <param name="gameData">保存的数据类</param>
public static void SaveJson<T>(this T gameData)
{
string filePath = Application.persistentDataPath + "/Data.dat";
StreamWriter sw = new StreamWriter(filePath);
string text = JsonMapper.ToJson(gameData);
sw.Write(text);
sw.Close();
Debug.Log("数据保存成功, 路径: " + filePath);
}
/// <summary>
/// 保存m_JsonData[]数据为默认文件路径/Data.dat
/// </summary>
/// <param name="gameData">m_JsonData数组</param>
/// <param name="text">保存的字符串</param>
public static void SaveJson<T>(this T[] gameData)
{
string filePath = Application.persistentDataPath + "/Data.dat";
StreamWriter sw = new StreamWriter(filePath);
string text = JsonMapper.ToJson(gameData);
sw.Write(text);
sw.Close();
Debug.Log("Data.dat 数据保存成功");
}
#endregion
#region Json读取
/// <summary>
/// 读取m_JsonData数据,返回值为m_JsonData类
/// </summary>
/// <param name="filePath">指定文件</param>
public static T LoadJson<T>(string fileName)
{
T jsonData;
StreamReader sr = new FileInfo(Application.persistentDataPath + "/" + fileName).OpenText();
//读取所有数据
string json = sr.ReadToEnd();
jsonData = JsonMapper.ToObject<T>(json);
Debug.Log(fileName + " 数据读取完成");
return jsonData;
}
/// <summary>
/// 读取m_JsonData路径为Application.dataPath + "/Data.dat"的数据,返回值为m_JsonData类
/// </summary>
/// <param name="filePath">文件路径</param>
public static T LoadJson<T>()
{
T jsonData;
string fileName = Application.persistentDataPath + "/Data.dat";
FileInfo fs = new FileInfo(fileName);
if (fs.Exists)
{
StreamReader sr = fs.OpenText();
//读取所有数据
string json = sr.ReadToEnd();
jsonData = JsonMapper.ToObject<T>(json);
sr.Close();
Debug.Log("数据读取完成 : " + fileName);
}
else
{
Debug.Log("文件不存在");
jsonData = default(T);
}
return jsonData;
}
/// <summary>
/// 初始化
/// </summary>
/// <returns></returns>
public static T LoadInitJson<T>(this T t)
{
T jsonData;
string fileName = Application.persistentDataPath + "/Data.dat";
FileInfo fs = new FileInfo(fileName);
if (fs.Exists)
{
StreamReader sr = fs.OpenText();
//读取所有数据
string json = sr.ReadToEnd();
jsonData = JsonMapper.ToObject<T>(json);
Debug.Log("数据读取完成 : " + fileName);
}
else
{
Debug.Log("文件不存在");
//jsonData = new VideoData();
jsonData = default(T);
}
return jsonData;
}
/// <summary>
/// Json[index][key]获取,返回值为string
/// </summary>
/// <returns>JsonString</returns>
public static string LoadJsons()
{
string fileName = Application.dataPath + "/Data.dat";
StreamReader sr = new FileInfo(fileName).OpenText();
//读取所有数据
string json = sr.ReadToEnd();
Debug.Log("Data.dat 数据读取完成 : " + json);
return json;
}
#endregion
#region Json和T的转换
/// <summary>
/// Get Json data
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <param name="JsonStr"></param>
/// <returns></returns>
public static T GetJsonData<T>(this T t, string JsonStr)
{
return JsonMapper.ToObject<T>(JsonStr);
}
/// <summary>
/// Set JsonData
/// </summary>
/// <param name="JsonStr"></param>
/// <returns></returns>
public static string SetJsonData<T>(this T JsonStr)
{
return JsonMapper.ToJson(JsonStr);
}
#endregion
}