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