목차
1. 저장 시스템
□ 설계
2. 저장
□ NuGet
□ Newtonsoft.Json
□ Json
□ 직렬화 / 역직렬화
□ visual Studio에서 사용방법
3. 실제 사용 예시
📝 1. 저장 시스템
: nuget의 NewtonJson을 사용하여 클래스를 직렬화 한 뒤 텍스트파일로 저장
: 저장된 텍스트 파일을 불러와서 역직렬화
1. 설계
📝 2. 저장
1. Nuget
: c# 저장방식을 검색하다 보면 nuget의 NewtonJson을 사용하는 글이 많이 보인다. nuget이 뭘까?
NuGet Gallery | Home
The NuGet Gallery is the central package repository for NuGet, the package manager for .NET.
www.nuget.org
: " NuGet is the package manager for. NET." 즉 닷넷의 패키지 매니저이다.
https://learn.microsoft.com/ko-kr/nuget/quickstart/install-and-use-a-package-in-visual-studio
빠른 시작: Visual Studio에서 NuGet 패키지 설치 및 사용(Windows에만 해당)
이 빠른 시작에서는 Windows용 Visual Studio 프로젝트에서 NuGet 패키지를 설치하고 사용하는 방법을 알아봅니다.
learn.microsoft.com
: NuGet 패키지에는 다른 개발자가 프로젝트에서 사용할 수 있도록 만든 재사용 가능한 코드가 포함되어 있다.
2. Newtonsoft.Json
: JSON 관련 작업을 할 때 편리한 기능을 제공하는 JSON 라이브러리
3.Json
📝 what is Json
□ Java Script Object Notation의약자
□ 데이터를 저장하고 전송하기 위한 형식
📝Json Data
□ 이름/값 쌍( 키/값 쌍 )으로 구성된다
□ JSON에서는 키는 큰따옴표로 묶인 문자열이어야 한다
{
"name": "John",
"age": 30
}
→ 더 자세한 내용은 w3 school 홈페이지 참고!
https://www.w3schools.com/js/js_json_syntax.asp
W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
4. 직렬화 / 역직렬화
📝Serialization (직렬화)
□ 문자열/숫자/객체/배열/bool/null 등의 타입을 json 문자열로 변환하는 과정
□ JsonConvert.SerializeObject 사용
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
string json = JsonConvert.SerializeObject(product);
📝 Deserializaion (역직렬화)
□ json 문자열을 문자열/숫자/객체/배열/bool/null 등의 타입으로 재변환하는 과정, 직렬화의 반대과정
□JsonConvert.DeserializeObject <T> 사용
string json = @"{
'Name': 'Bad Boys',
'ReleaseDate': '1995-4-7T00:00:00',
'Genres': [
'Action',
'Comedy'
]
}";
Movie m = JsonConvert.DeserializeObject<Movie>(json);
5. visual Studio에서 사용방법
□ 솔루션 탐색기 우클릭 → Nuget 패키지 관리 선택
□ newton 검색 후 다운로드
📝 3. 실제 사용
1. 직렬화 & 저장
// 직렬화 된 string 반환
private string SerializedObject()
{
try
{
PlayerSaveData data = new PlayerSaveData();
// 직렬화
string json = JsonConvert.SerializeObject(data);
//Console.WriteLine(json);
return json;
}
catch (Exception e)
{
Console.WriteLine($"직렬화 중 오류 발생 : {e.Message}");
return string.Empty;
}
}
public void SaveData()
{
Console.WriteLine("데이터를 저장합니다.");
// 직렬화
string jsonString = SerializedObject();
// 해당 디렉토리 (폴더) 가 없으면 생성
if (!Directory.Exists(savePath))
Directory.CreateDirectory(savePath);
// string을 textFile로 저장
// 파일이 이미 있으면 덮어씀
using (StreamWriter sw = File.CreateText(savePath + saveFileName))
{
sw.WriteLine(jsonString);
}
}
2. 역직렬화 / 불러오기
public void LoadData()
{
// 경로 + 파일명에 파일이 있으면 ?
if (File.Exists(savePath + saveFileName))
{
Console.WriteLine(" 저장파일이 있습니다.");
// 불러오기
string desString = File.ReadAllText(savePath + saveFileName);
// 역 직렬화
try
{
PlayerSaveData data = JsonConvert.DeserializeObject<PlayerSaveData>(desString);
}
catch (Exception e) { Console.WriteLine(e); }
}
else
{
Console.WriteLine(" 저장파일이 없습니다.");
}
}
📝디렉토리/텍스트파일을 저장하고 불러오는 방법
https://youcheachae.tistory.com/33
[c#][TextRPG] 3. c#의 System.IO를 이용한 파일 시스템 작업
목차1.Stream / StreamWriter2. 디렉터리 존재 여부3. 디렉토리 생성 / 삭제4. 파일 존재 여부5. 파일 생성 / 삭제 6. 파일 읽기 📝 System.IO 네임스페이스using System.IO;: 파일 시스템 작업 ( 디렉터리 / 파
youcheachae.tistory.com
📝 깃허브
https://github.com/kimYouChae/SpartaCodingClub
GitHub - kimYouChae/SpartaCodingClub
Contribute to kimYouChae/SpartaCodingClub development by creating an account on GitHub.
github.com
'c#' 카테고리의 다른 글
[c#] LINQ 이해하기 (0) | 2025.02.11 |
---|---|
[c#]delegate 이해하기 (1) | 2025.02.10 |
[c#][TextRPG] 3. c#의 System.IO를 이용한 파일 시스템 작업 (0) | 2025.02.07 |
[c#][TextRPG] 1. Interface를 활용한 Scene관리 / 싱글톤 (0) | 2025.02.05 |
[c#] Interface 이해하기 (0) | 2025.02.03 |