반응형
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
'프로그래밍 > C#' 카테고리의 다른 글
| C# readonly 사용시 값 타입 vs 참조 타입 차이점 (0) | 2025.06.16 |
|---|---|
| C# 업 캐스팅(Upcasting)에 대해서 알아보자 (0) | 2025.05.19 |
| C# 얕은 복사, 깊은 복사에 대해서 알아보자 (1) | 2025.05.19 |
| C# EF Core 사용시 DB 상태를 간단하게 체크하는 방법 (0) | 2025.05.19 |
| UseForwardedHeaders를 이용해서 클라이언트 실제 IP 얻기 (0) | 2025.05.19 |
댓글