VisualStudio/C#서버
[C#서버] Newtonsoft.Json 사용방법
usingsystem
2022. 12. 2. 11:13
728x90
#region 데이터 영역
[Serializable]
public class Student
{
public int id { get; set; }
public string name { get; set; }
public string age { get; set; }
}
[Serializable]
public class StudentData : ILoader<int, Student>
{
List<Student> _students = new List<Student>();
public Dictionary<int, Student> MakeDictionary()
{
Dictionary<int, Student> students = new Dictionary<int, Student>();
foreach (Student student in _students)
students.Add(student.id, student);
return students;
}
}
#endregion
#region 여러개의 Json데이터 위치 경로 저장 Json
[Serializable]
public class ConfigPath
{
public string path { get; set; }
}
public class ConfigManager
{
public static ConfigPath Config { get; private set; }
public static void LoadConfig(string pathe)
{
string text = File.ReadAllText($"{pathe}/config.json"); // Debug에 경로 json 읽어오는 부분
Config = Newtonsoft.Json.JsonConvert.DeserializeObject<ConfigPath>(text);
}
}
#endregion
#region 파싱 영역
public interface ILoader<T1, T2>
{
Dictionary<T1, T2> MakeDictionary();
}
public class DataManager
{
public static Dictionary<int, Student> StudentDic { get; private set; } = new Dictionary<int, Student>();
public static void LoadData()
{
StudentDic = LoadJson<StudentData, int, Student>("StudentData").MakeDictionary();
}
public static Loader LoadJson<Loader, T1, T2>(string path) where Loader : ILoader<T1, T2>
{
string text = File.ReadAllText($"{ConfigManager.Config.path}/{path}.json");
return Newtonsoft.Json.JsonConvert.DeserializeObject<Loader>(text);
}
}
#endregion
class Program
{
static void Main(string[] args)
{
ConfigManager.LoadConfig("");
DataManager.LoadData();
foreach (Student student in DataManager.StudentDic.Values)
{
Console.WriteLine($"{student.id}, {student.name}, {student.age}");
}
}
}
728x90