본문 바로가기
프로그래밍/C#

C# JSON 직렬화/역직렬화 옵션을 설정하는 여러 방법

by bantomak 2025. 6. 1.
반응형

JSON 직렬화/역직렬화 옵션 설정

C#에서 JSON 직렬화/역직렬화 옵션을 설정하는 방법을 다양하게 제공한다. 사용자의 필요와 환경에 맞게 선택해서 사용하면 된다.

  • 속성 기반(Attribute-Base)
  • 일반 클래스에서 개별로 선언해서 사용
  • 전역 Json 옵션 주입

속성 기반(Attribute-Base)

  • 개별 클래스나 속성 위에 JsonConverter를 붙이는 방식
  • 로컬 커스터마이징은 좋지만, 규모가 커지면 매번 붙이기 귀찮고, 전역으로 제어하기가 어려움
[JsonConverter(typeof(MyCustomConverter))]
public MyType Data { get; set; }

일반 클래스에서 개별로 선언해서 사용

  • options을 개별로 선언해서 JsonSerializer.Serialize() 매서드 호출시에 입력하는 방식
var options = new JsonSerializerOptions
{
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
};

options.Converters.Add(new MyCustomConverter());

string json = JsonSerializer.Serialize(obj, options);

전역 Json 옵션 주입

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
        options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
        options.JsonSerializerOptions.Converters.Add(new MyCustomConverter()); // 전역 컨버터 추가
    });

이 설정은 모든 System.Text.Json 기반 JSON 직렬화에 적용된다.

함께 읽으면 좋은 글

 

C# 실무에서 사용하는 전역 JSON 옵션 설정

실무에서 전역 JSON 옵션 설정하기C# 프로젝트를 진행하면서 JSON을 사용한다면 JSON 옵션 설정이 파편화되어있어서 여기저기서 다르게 Serilaize/Deserialize 돼서 괴로웠던 경험들이 한 번쯤은 있을 것

jettstream.tistory.com

댓글