'JsonIgnore'속성은 JSON으로 출력할 때 무시하게 해주는 속성입니다.
해당 속성으로 지정되어 있으면 JSON으로 출력할 때 해당 필드가 없어야 합니다.
그런데 이 속성이 제대로 적용이 될 때가 있고 안될 때가 있는 겁니다...?????
원인은 의외로 간단한데......
'JsonIgnore'은 두 군데에 선언이 되어 있습니다.
System.Text.Json.Serialization
Newtonsoft.Json
만약 자신이 'System.Text.Json.Serialization'를 사용 중인데 'Newtonsoft.Json.JsonIgnore'를 사용한다거나
반대로 ''Newtonsoft.Json'을 사용 중인데 'System.Text.Json.Serialization'를 사용했다면 동작하지 않습니다.
자신의 프로젝트에 맞게 아래 두 개 중 한 개를 'using'해주면 됩니다.
using System.Text.Json.Serialization;
---- 혹은 -----
using Newtonsoft.Json;
만약 두 개가 혼제된 프로젝트라면 아래와 같이 둘 다 속성에 넣어주는 게 좋습니다.
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public byte[] Version { get; set; } = new byte[0];
이게 되다 말다 하고 있던 것도 모르고 잘되는지 알고 이것저것 하다가
엔트리 프레임웍(Entity Framework)에서 '속성에 대한 참조 루프'에러가 나서
"아니 제외된 프로퍼티가 왜 참조 루프가 일어나?"
하면서 봤더니 이런 문제가 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
어쩐지 가끔 프론트엔드에 전달하면 안 되는 필드가 있는 경우가 있어서 뭔가 했더니 이 문제였다니...