안녕하세요.
예전에 NewtonSoft.Json 라이브러리를 설명드렸었는데요.
이번엔 System안에 속한 Json 컨버팅 라이브러리를 설명드리도록 하겠습니다.
NewtonSoft.Json( [c# dotnet nuget] Newtonsoft.Json (tistory.com) ) 글에 설명을 자세히 적어놨기 때문에
기본적인 시리얼라이즈, 디시시리얼라이즈 원리 자체는 동일하기때문에 여기서는 설명은 최소화 합니다.
[c# dotnet nuget] Newtonsoft.Json
이번에는 Newtonsoft.Json에 대해서 소개하도록 하겠습니다. System.Text.Json으로도 json데이터를 처리할 수 있지만 너무나 편리하고 기존에 만들어진 소스에서 많이 사용하고 있어서 사용하게 되었고
pichen.tistory.com
- 인스턴스를 json형태의 문자열로 바꾸는 메소드(직렬화)
// 그냥
string jsonString = JsonSerializer.Serialize(어떤 인스턴스);
// 제네릭을 사용
string jsonString = JsonSerializer.Serialize<어떤 클래스>(어떤 클래스의 인스턴스);
- System.Text.Json에도 컨버팅 옵션이 존재합니다!
// 명확하게 써놓은것
var options = new JsonSerializerOptions { WriteIndented = true };
string jsonString = JsonSerializer.Serialize(인스턴스, options);
// 한줄로
string jsonString = JsonSerializer.Serialize(
인스턴스,
new JsonSerializerOptions { WriteIndented = true }
);
JsonSerializerOptions에 쓰일 수 있는 변수를 설명드리겠습니다. Newtonsoft.Json을 보고 오신분이라면 WriteIndented가 뭔지 감이 오실텐데요.
WriteIndented =true : 를 설정하면 엔터등 공백을 포함하여 json문자열을 만듭니다.
PropertyNameCaseInsensitive=true : 대소문자를 구분하여 비교를 사용합니다.
Newtonsoft.Json에서는 대소문자를 구분하지 않아 false와 동일하며 System.Text.Json에서는 구분이 가능하다는 장점이 있는겁니다.
IgnoreReadOnlyFields=true : 프로퍼티가 readonly인 경우 이를 무시하고 serialize합니다.
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull : null값을 무시합니다.
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault : 기본값을 무시합니다.
- json형태의 문자열을 Oject또는 특정 클래스로 바꾸는 메소드(역직렬화)
var oject = JsonSerializer.Deserialize(json);
클래스 인스턴스 = JsonSerializer.Deserialize<클래스>(json);
- 인스턴스를 db 등이 아닌 파일에 기록할때 사용하는 메소드
string fileName = "아무파일명.json";
using FileStream createStream = File.Create(fileName);
await JsonSerializer.SerializeAsync(createStream, 파일화하고싶은 인스턴스);
await createStream.DisposeAsync();
json파일로 만든 것은 ReadAllText로 읽어와서 Desirialize하여 사용하시면 됩니다.
제가 사용하는 기능 위주로 작성했기 때문에 어떤 특정한 내용을 찾고자 오셨다면 내용이 부족하다 느낄 수 있습니다.
Newtonsoft.Json에서 System.Text.Json으로 마이그레이션 - .NET | Microsoft Learn
Newtonsoft.Json에서 System.Text.Json으로 마이그레이션 - .NET
로 마이그레이션하는 Newtonsoft.JsonSystem.Text.Json 방법과 차이점에 대해 알아봅니다 System.Text.Json.
learn.microsoft.com
microsoft 공식 링크를 통해 자세한 부분을 찾아보시기 바립니다.
'주요 언어 - 플랫폼 > C# - .NET' 카테고리의 다른 글
| [C#] 초성을 포함한 StartWith 함수 만들기 (1) | 2024.05.08 |
|---|---|
| [c# / .NET] 설정 파일을 읽는 법에 대하여(.json/.ini) (0) | 2024.03.19 |
| [c# dotnet nuget] MsgReader (0) | 2023.11.07 |
| [c# dotnet nuget] Newtonsoft.Json (0) | 2023.10.27 |
| [c# - dotnet nuget] serilog (0) | 2023.10.26 |