본문 바로가기
Programming/C# & .NET

[C#] Json 직렬화/역직렬화 속성 제외하는 방법

by Kor-IT 2022. 9. 14.
반응형

Json 속성제외하는 방법 [JsonIgnore]

 

 

Class 속성 중 Json 직렬화/역직렬화시 속성 제외하는 방법을 알 수 있다. 기본적으로 직렬화/역직렬화 하면 모든 public 속성을 직렬화/역직렬화 한다. 그중 일부 속성을 사용하지 않도록 하는 방법이 있다. Newtonsoft.Json의 속성을 사용하거나 System.Text.Json을 사용하는 방법이 있다. 공통적으로는 [JsonIgnore]를 사용한다.

 

 

방법 1. Newtonsoft.Json

Newtonsoft.Json 공홈 [JsonIgnore]

이미지 기준 직렬화 제외할 속성에 [JsonIgnore] 사용하면 제외된다. 해당 이미지의 코드를 아래 같이 표기해두겠다.

Newtonsoft.Json 공홈

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

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

댓글