C# Newtonsoft.Json 을 이용하면서 발생한 에러이다.
Newtonsoft.Json.JsonSerializationException: Cannot create and populate list type System.Collections.Generic.Queue`1[System.String]. Path '', line 1, position 1.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewList (Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonArrayContract contract, System.Boolean& createdFromNonDefaultCreator)
Queue 타입은 Json으로 저장하거나 불러오지 못하는 듯 하다.
내 예상으로는 메모리상에 일정하지 않게 저장되는 형식은 저장이 아예 안되는 듯 하다. (자료구조 참고)
실제로 Linked List도 저장이 되지 않았다.
간단한 해결 방법은
Save시 List로 변환
SafetyLoader.Save("PredictBossDungeons", DungeonManager.instance.PredictBossDungeons.ToList<string>());
Load시 Queue 로 변환
DungeonManager.instance.PredictBossDungeons = new Queue<string>(list);
크기가 고정되기 때문에 Array로 표현하는게 낫지 않나 ? 싶을 수도 있는데
c#의 일반적인 List는 성능이 거의 배열과 동일하기 때문에(cpp의 vector이랑 비슷) 성능상으로 그렇게 큰 차이는 나지 않는다.
https://learn.microsoft.com/ko-kr/dotnet/api/system.collections.generic.list-1?view=net-7.0
나중에 자료구조를 다루면서 자세히 써봐야겠다.
'기타 > 오류모음' 카테고리의 다른 글
[Admob Error in IOS] Rewarded ad failed to load an ad with error (0) | 2023.06.03 |
---|---|
[Unity IOS IAP] Unavailable product (1) | 2023.05.23 |
[IOS Build] BitCode, Pods Setting (0) | 2023.05.09 |
[IOS 빌드] 'gem install cocoapods --user-install' succeeded but the pod tool cannot be found. (0) | 2023.05.09 |
Admob, Unity Mediation 관련 버그 (0) | 2023.02.19 |