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
경태_왕
4
혹시 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