json property C#
public class Videogame
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("release_date")]
public DateTime ReleaseDate { get; set; }
}
json property C#
public class Videogame
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("release_date")]
public DateTime ReleaseDate { get; set; }
}
c# JsonIO
namespace JsonHelper
{
public static class JsonIO
{
private static object mutex = new object();
public static Dictionary<string,object> LockList = new Dictionary<string,object>();
public static T CastJsonToObject<T>(this string jsonstr) where T : new()
{
try
{
return JsonConvert.DeserializeObject<T>(jsonstr);
}
catch(Exception ex)
{
return new T();
}
}
private static object GetLock(string text)
{
lock(mutex)
{
if (!LockList.ContainsKey(text))
{
LockList[text] = new object();
}
foreach (string key in LockList.Keys.ToList<string>())
{
if (!key.Equals(text) && !Monitor.IsEntered(LockList[key]))
{
LockList.Remove(key);
}
}
}
return LockList[text];
}
public static T Load<T>(string path) where T:new()
{
if (File.Exists(path))
{
string fullpath = Path.GetFullPath(path);
lock(GetLock(fullpath))
{
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (StreamReader sr = new StreamReader(fs))
{
string s = sr.ReadToEnd();
fs.Close();
try
{
return JsonConvert.DeserializeObject<T>(s);
}
catch
{
JsonIO.Save(path, new T());
return new T();
}
}
}
}
}
else
{
JsonIO.Save(path, new T());
return new T();
}
}
public static void SetDefaultSerializer()
{
JsonConvert.DefaultSettings = (() =>
{
var settings = new JsonSerializerSettings();
settings.Converters.Add(new StringEnumConverter { });
return settings;
});
}
public static void Save(string path, object cfg)
{
string fullpath = Path.GetFullPath(path);
lock (GetLock(fullpath))
{
AutoResetEvent autoResetEvent = new AutoResetEvent(false);
//We dont user Directory.CreateDirectory due. When str is "C:config.json" it will create config.json as dir
DirHelper.CreateDirectory(path);
try
{
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.Write(JsonConvert.SerializeObject(cfg, Formatting.Indented));
}
fs.Close();
}
}
catch (Exception ex)
{
var fileSystemWatcher =
new FileSystemWatcher(Path.GetDirectoryName(path))
{
EnableRaisingEvents = true
};
fileSystemWatcher.Changed +=
(o, e) =>
{
if (Path.GetFullPath(e.FullPath) == Path.GetFullPath(path))
{
try
{
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.Write(JsonConvert.SerializeObject(cfg, Formatting.Indented));
}
fs.Close();
}
}
catch (Exception ex2)
{
}
autoResetEvent.Set();
}
};
autoResetEvent.WaitOne();
}
}
}
}
}
Copyright © 2021 Codeinu
Forgot your account's password or having trouble logging into your Account? Don't worry, we'll help you to get back your account. Enter your email address and we'll send you a recovery link to reset your password. If you are experiencing problems resetting your password contact us