mirror of
https://github.com/tribufu/ServerManagers
synced 2026-05-06 15:17:34 +00:00
64 lines
1.7 KiB
C#
64 lines
1.7 KiB
C#
using System.IO;
|
||
using System.Runtime.Serialization.Json;
|
||
|
||
namespace ServerManagerTool.Plugin.Common
|
||
{
|
||
public static class JsonUtils
|
||
{
|
||
public static T DeserializeFromFile<T>(string file)
|
||
{
|
||
if (string.IsNullOrEmpty(file) || !File.Exists(file))
|
||
return default(T);
|
||
|
||
StreamReader streamReader = null;
|
||
|
||
try
|
||
{
|
||
streamReader = File.OpenText(file);
|
||
|
||
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
|
||
return (T)serializer.ReadObject(streamReader.BaseStream);
|
||
}
|
||
catch
|
||
{
|
||
return default(T);
|
||
}
|
||
finally
|
||
{
|
||
if (streamReader != null)
|
||
streamReader.Close();
|
||
}
|
||
}
|
||
|
||
public static bool SerializeToFile<T>(T value, string file)
|
||
{
|
||
if (value == null)
|
||
return false;
|
||
|
||
StreamWriter streamWriter = null;
|
||
|
||
try
|
||
{
|
||
var folder = Path.GetDirectoryName(file);
|
||
if (!Directory.Exists(folder))
|
||
Directory.CreateDirectory(folder);
|
||
|
||
streamWriter = File.CreateText(file);
|
||
|
||
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
|
||
serializer.WriteObject(streamWriter.BaseStream, value);
|
||
|
||
return true;
|
||
}
|
||
catch
|
||
{
|
||
return false;
|
||
}
|
||
finally
|
||
{
|
||
if (streamWriter != null)
|
||
streamWriter.Close();
|
||
}
|
||
}
|
||
}
|
||
}
|