public class JsonFileHelper
{
public static string JsonConfigFileName = "SunSofteWareAppConfig.Json";
#region 配置文件读写
/// <summary>
/// 将配置对象写入程序执行目录指定名称的文件
/// </summary>
/// <param name="config">配置对象</param>
/// <param name="strConfigFileFullPath">配置文件绝对路径</param>
/// <returns></returns>
public static string SaveConfig(object config, string strConfigFileFullPath)
{
string strRes = string.Empty;
try
{
if (config == null)
{
if (File.Exists(strConfigFileFullPath))
{
File.Delete(strConfigFileFullPath);
}
}
string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(config, Formatting.Indented);
File.WriteAllText(strConfigFileFullPath, strJson);
}
catch (Exception ex)
{
strRes = ex.Message;
}
return strRes;
}
/// <summary>
/// 将配置对象写入程序执行目录指定名称的文件
/// </summary>
/// <param name="config">配置对象</param>
/// <param name="strStartPath">文件存放目录</param>
/// <param name="strConfigFileName">配置文件名称</param>
/// <returns></returns>
public static string SaveConfig(object config, string strStartPath, string strConfigFileName = null)
{
string strRes = string.Empty;
string strFileName = string.IsNullOrEmpty(strConfigFileName) ? JsonConfigFileName : strConfigFileName;
string strPath = Path.Combine(strStartPath, strFileName);
return SaveConfig(config, strPath);
}
/// <summary>
/// 读取配置文件的配置信息对象
/// </summary>
/// <typeparam name="T">泛型类型</typeparam>
/// <param name="strConfigFileFullPath">配置文件的绝对路径</param>
/// <returns></returns>
public static T ReadConfig<T>(string strConfigFileFullPath) where T : class
{
T oRes = default(T);
try
{
if (File.Exists(strConfigFileFullPath))
{
string strJson = File.ReadAllText(strConfigFileFullPath);
if (!string.IsNullOrEmpty(strJson))
{
object oConvertRes = Newtonsoft.Json.JsonConvert.DeserializeObject(strJson, typeof(T));
if (oConvertRes != null)
{
oRes = oConvertRes as T;
}
}
}
}
catch (Exception ex)
{
throw ex;
}
return oRes;
}
/// <summary>
/// 读取配置对象信息
/// </summary>
/// <typeparam name="T">配置对象泛型类型信息</typeparam>
/// <param name="strStartPath">程序启动路径</param>
/// <param name="strName">配置文件名称</param>
/// <returns></returns>
public static T ReadConfig<T>(string strStartPath, string strName) where T : class
{
string strPath = Path.Combine(strStartPath, strName);
return ReadConfig<T>(strPath);
}
#endregion
}