基于LitJson,寄几集成的Json基本数据读写

记得先引用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
}

猜你喜欢

转载自blog.csdn.net/qq_33174548/article/details/89488259