내일배움캠프_Unity_6기/TIL(Today I Learend)
TIL : 2024-09-27(금) :: 직렬화,역직렬화 간단 설명
BirdHead
2024. 9. 27. 21:42
Q. C#에서 객체가 사라지는 타이밍?
A. 객체가 사용(호출)이 되지 않을때 GC(가비지컬렉터)에서 제거를 함
C/C++과는 다르게 C#은 객체를 만들면 프로그래머가 따로 건드리지 않아도 사용되지 않으면 자동으로 제거된다고한다.
Q. 직렬화 와 역직렬화의 차이점?
A.
직렬화 : 외부에서 들어온 데이터를 코드영역 안에서 사용할 수 있게 변환하는것
역직렬화 : 코드영역에 있는 데이터를 외부로 꺼낼수 있게 변환하는것
Q. .csv 와 .json의 공통점,차이점 ?
A.
공통점 : 외부에서 관리되는 데이터 파일형들
차이점 :
.csv는 ( , ) 로 문자열을 구분하여 데이터를 관리함 , csv는 엑셀 파일로 셀 한칸마다 데이터 칸이기에
.json은 배열,colletion 에 있는 구조들을 구체화 하여 관리에 능동적임
C# System.Text 에 속한 Json 패키지
using System.Text.Json;
using System.Text.Json.Serialization;
// 1. 객체를 생성하고 JSON으로 직렬화하여 파일에 저장
List<Quest> quests = new List<Quest>
{
new Quest("퀘스트1"),
new Quest("퀘스트2"),
new Quest("퀘스트3")
};
// 2. 리스트를 JSON 문자열로 직렬화
string jsonString = JsonSerializer.Serialize(quests, new JsonSerializerOptions { WriteIndented =true});
//3. 파일 경로 설정
string filePath = "Quest.json";
//4. JSON 문자열을 파일로 저장
File.WriteAllText(filePath, jsonString);
Console.WriteLine($"Serialized JSON list saved to {filePath}");
// 5. JSON 파일을 읽어와서 리스트로 역직렬화
if (File.Exists(filePath))
{
string loadedJsonString = File.ReadAllText(filePath);
List<Quest> loadedQuest = JsonSerializer.Deserialize<List<Quest>>(loadedJsonString);
//6. 역직렬화된 리스트 출력
foreach (Quest quest in loadedQuest)
{
Console.WriteLine($"Loaded Quest: Label = {quest.Label}, Detail = {quest.Detail}, Finish = {quest.IsFinish}");
}
}