반응형

안녕하세요. 

예전에 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 공식 링크를 통해 자세한 부분을 찾아보시기 바립니다.

반응형

+ Recent posts