[Json.NET(Newtonsoft.Json)] JsonConvert.SerializeObject JsonIgnore Attribute 무시 Option

public class ABC()
{
    public string A { get; set; }
    
    [JsonIgnore]
    public string B { get; set; }
}

ABC abc = new();
abc.A = "2PM";
abc.B = "아비백";

string serializedStr = JsonConvert.SerializeObject(abc);
Console.WriteLine(serializedStr);

위 코드의 실행 결과로 A 속성 값에 대해서만 직렬화되고 출력이 될 것입니다.
혹시 일시적으로 A와 B 속성을 모두 직렬화하고 싶을 때 사용하는 SerializeObject 옵션이 있거나, 대체 방법이 있을까요…?

1 Like

자답합니다.
닷넷채팅방 밍님께서 알려주셨습니다.

2 Likes

동일한 질문에 대한 스택오버플로우 답변이 있어 올려드립니다.

3 Likes

혹시 NewtonSoft 의 JSON 말고 순수 C#의 System.Text.Json 에서도 가능한 방법을 알고 계실까요??

2 Likes

아…아니요 잘 모르겠습니다. System.Text.Json은 다뤄보지 않았습니다…ㅠㅠ

1 Like

System.Text.Json 에서는 완전 동일 하진 않지만

다음과 같이 직렬화를 무지할지, 또는 기본적으로 정해진 규칙에 의거해 허용 할지
[JsonIgnore] 특성의 Condition 속성으로 제공 합니다.
How to ignore properties with System.Text.Json | Microsoft Learn

Never : 항상 직렬화 허용
WhenWritingNull : null인 경우 무시
외 몇가지 속성이 있습니다.


또한 닷넷 최신 환경을 사용 하신다면
.NET 7 부터 NewtonSoft의 ContractResolver 와 비슷한 기능으로
JSON 사용자 계약 구현을 제공 합니다. - Custom serialization and deserialization contracts | Microsoft Learn

위 기능으로 특정 이름이나 형식, 값을 가진 속성은 직렬화 무시 처리 등 직접 구현을 제공 합니다.

5 Likes