반응형
Class 속성 중 Json 직렬화/역직렬화시 속성 제외하는 방법을 알 수 있다. 기본적으로 직렬화/역직렬화 하면 모든 public 속성을 직렬화/역직렬화 한다. 그중 일부 속성을 사용하지 않도록 하는 방법이 있다. Newtonsoft.Json의 속성을 사용하거나 System.Text.Json을 사용하는 방법이 있다. 공통적으로는 [JsonIgnore]를 사용한다.
방법 1. Newtonsoft.Json
이미지 기준 직렬화 제외할 속성에 [JsonIgnore] 사용하면 제외된다. 해당 이미지의 코드를 아래 같이 표기해두겠다.
public class Account
{
public string FullName { get; set; }
public string EmailAddress { get; set; }
[JsonIgnore]
public string PasswordHash { get; set; }
}
Account account = new Account
{
FullName = "Joe User",
EmailAddress = "joe@example.com",
PasswordHash = "VHdlZXQgJ1F1aWNrc2lsdmVyJyB0byBASmFtZXNOSw=="
};
string json = JsonConvert.SerializeObject(account);
Console.WriteLine(json);
// {"FullName":"Joe User","EmailAddress":"joe@example.com"}
반응형
방법 2. System.Text.Json
.Net 에서 지원하는 System.Text.Json 을 통해서 하는 방법에는 조건부 제외가 가능하다. JsonIgnoreCondition 을 통해 다양한 옵션을 설정할 수 있다.
JsonIgnoreCondition 옵션
직렬화 및 역직렬화에서 JsonIgnoreCondition은 속성을 무시하는 방법을 제어한다.
Object > ValueType > Enum > JsonIgnoreCondition
속성 | 설명 |
Always | 항상 무시된다. Condition 을 지정하지않으면 기본 옵션으로 선택된다. |
Never | IgnoreNullValues 구성과 관계없이 항상 직렬화되고 역직렬화된다. |
WhenWritingDefault | null 인 경우에마 무시된다. |
WhenWritingNull | 값이 null 이면 직렬화 중에 속성이 무시된다. 참조 형식 속성과 필드에만 적용된다. |
728x90
using System.Text.Json;
using System.Text.Json.Serialization;
namespace JsonIgnoreAttributeExample
{
public class Forecast
{
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
public DateTime Date { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public int TemperatureC { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Summary { get; set; }
};
public class Program
{
public static void Main()
{
Forecast forecast = new()
{
Date = default,
Summary = null,
TemperatureC = default
};
JsonSerializerOptions options = new()
{
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault
};
string forecastJson =
JsonSerializer.Serialize<Forecast>(forecast,options);
Console.WriteLine(forecastJson);
}
}
}
//{"TemperatureC":0}
방법은 2가지이며 해당 방법중 자신이 필요한 상황에 따라 참조하여 사용하면 된다.
더보기
반응형
'Programming > C# & .NET' 카테고리의 다른 글
[C#] List 정렬 총정리(기본정렬, 여러개 정렬) (0) | 2022.10.18 |
---|---|
[C#] JsonConvert null 해결방법 (1) | 2022.10.13 |
[C#] lock 문 사용법 (1) | 2022.08.03 |
[C#] 멀티스레드 (Multi-Thread) (1) | 2022.08.02 |
[C#] 스레드(Thread) (1) | 2022.07.28 |
댓글