管理类:
using LitJson;
using System;
using System.IO;
using UnityEngine;
public class LitJsonMgr
{
public static LitJsonMgr Instance = new LitJsonMgr();
private LitJsonMgr()
{
}
public bool WriteStringToFile(string fullPath, string data)
{
try
{
string directoryName = Path.GetDirectoryName(fullPath);
if (!Directory.Exists(directoryName))
{
Directory.CreateDirectory(directoryName);
}
File.WriteAllText(fullPath, data);
return true;
}
catch (Exception ex)
{
Debug.LogError(string.Format("WriteStringToFile fail, file=[{0}], Exception msg:[{1}]", fullPath, ex.ToString()));
return false;
}
}
public bool WriteToFile(string fullPath, JsonData data)
{
return WriteStringToFile(fullPath, data.ToJson());
}
public JsonData ReadFromFile(string fullPath)
{
try
{
var json = ReadStringFromFile(fullPath);
if (string.IsNullOrEmpty(json))
{
return null;
}
return JsonMapper.ToObject(json);
}
catch (Exception ex)
{
Debug.LogErrorFormat("ReadFromFile {0} failed!, Exception:{1}", new object[2] { fullPath, ex.ToString() });
return null;
}
}
public string ReadStringFromFile(string fullPath)
{
try
{
if (!File.Exists(fullPath))
{
return null;
}
return File.ReadAllText(fullPath);
}
catch (Exception ex)
{
Debug.LogErrorFormat("ReadFromFile {0} failed!, Exception:{1}", new object[2] { fullPath, ex.ToString() });
return null;
}
}
}
简单的存取测试代码:
using LitJson;
using UnityEngine;
public class LitJsonTest : MonoBehaviour
{
public class Role
{
public string name;
public int age;
}
private Role role = new Role();
private string configPath = "/Config/RoleInfo.json";
private void Awake()
{
role.name = "鲁班大师";
role.age = 18;
var data = JsonMapper.ToJson(role);
var jsonData = JsonMapper.ToObject(data);
LitJsonMgr.Instance.WriteToFile(Application.streamingAssetsPath + configPath, jsonData);
}
private void OnDisable()
{
var jsonData = LitJsonMgr.Instance.ReadFromFile(Application.streamingAssetsPath + configPath);
var roleInfo = JsonMapper.ToObject<Role>(jsonData.ToJson());
Debug.LogError(roleInfo.name);
}
}