개발/C#&unity 3

C# JsonConverter 사용

newtonsoft.json을 사용하다보면 class를 직렬화, 역직렬화할때 형태를 변형하거나 추가 작업을 실행해줘야 하는 경우가 있다. 이를 모든 코드에서 진행해야할 경우 유지보수시 실수가 나기 딱 좋은 부분이다. 이런 부분에 대해서는 JsonConveter를 사용하여 처리하는 것이 좋다. 예제를 만들기 위해 불필요한 변형을 해보자 class내의 int형 멤버 변수가 존재하는데 이를 string으로 변형하여 json을 만들어보자 [JsonConverter(typeof(JSonTestConverter))] public class JsonTest { public int a; public override string ToString() { return $"a = {a}"; } } public class JS..

개발/C#&unity 2024.02.17

Newtonsoft.Json 사용시 생성자에서 리스트를 초기화할때 중복으로 들어가는 문제

개인적으로 Newtonsoft.Json은 C#을 사용할 때 거의 항상 사용하게되는 라이브러리다. 이번에 class의 생성자에서 list를 생성하고 초기값을 집어넣는 코드를 넣었는데, json을 Deserialize 할 때, 생성자에서 넣어둔 값이 중복으로 들어가는 문제가 발생했다. 정확히는 생성자에서 넣어둔 초기값이 먼저 들어가고 json Deserialize한 값들이 추가로 들어가는 것을 확인했다. 처음에는 이를 처리하기 위해 아래처럼 우회했다. public class TestClass { public TestClass(bool isInit = false) { // 블라블라 } } 위와 같이 생성자의 파라미터에 초기값을 선언해주고 사용하게 될경우 Deserialize할 때 생성자가 호출되지 않는것을 확..

개발/C#&unity 2024.02.17