Notice
Recent Posts
Recent Comments
Link
스토리지
json으로 직렬화할 때 문제점 본문
QuestInfo info = new QuestInfo();
info.id = questId;
info.count = count;
var json = JsonConvert.SerializeObject(questInfos);
File.WriteAllText("./quest_info.json", json);
이러한 방식으로 저장한다고 하면 json 파일 안에는
{"id"=questId, "count"=count}로 저장된다. 즉 배열이 아닌 객체로 저장이된다.
근데 우리가 부르는 코드는
var arr = JsonConvert.DeserializeObject<T[]>(json);
dicDatas = arr.ToDictionary(x => x.id);
즉 배열로 불러온다. 그런데 위의 코드는 객체로 저장을 했다. 객체와 배열은 서로 호환이 되지 않기에 arr이란 변수에 역직렬화된 값이 들어갈 수가 없다. 이러면 무조건 Newtonsoft.Json 형식의 에러를 발생시키게 된다.
∴ 저장할 때 배열로 저장하면 이 문제를 해결할 수 있다.
QuestInfo info = new QuestInfo();
info.id = questId;
info.count = count;
questInfos.Add(info);
QuestInfo temp = new QuestInfo();
temp.id = 2000;
temp.count = 0;
questInfos.Add(temp);
var json = JsonConvert.SerializeObject(questInfos);
File.WriteAllText("./quest_info.json", json);
(questInfos는 List<QuestInfo>형식이다.
이런식으로 json에 저장하면 [{~~~},{~~~}] 식으로, 즉 배열로 저장이된다.
json은 c#에서 List형식을 지원하기에 이런방식으로 저장하는게 제일 좋은거같다.
'Unity > 문제해결' 카테고리의 다른 글
[4.18] 게임오브젝트에 중력이 제대로 적용이 안되는 문제 (해결) (0) | 2021.04.18 |
---|---|
(문제) 씬에서 보이던게 게임뷰에서 안보이는 문제 (0) | 2021.04.13 |
[3.25] 수정중인 코드 (0) | 2021.03.25 |
객체를 출력할 때 하나하나 멤버를 안 호출하고 객체를 출력하기 (0) | 2021.03.16 |
while문, switch문 중첩 시, break가 while을 종료하는 법 (0) | 2021.03.10 |
Comments