Basically what I want is something like below
[SomeJsonIgnoreAnnotation]
class MySecret {
public int Secret { get; set; } = 1;
}
class A {
public MySecret SecretA { get; set; } = new();
}
class B {
public MySecret SecretB { get; set; } = new();
}
And System.Text.Json.JsonSerializer would treat class A and class B as if SecretA and SecretB are annotated with [JsonIgnore]
CodePudding user response:
The simple solution:
class MySecret {
[JsonIgnore]
public int Secret { get; set; } = 1;
}
Now the property Secret will never be serialized by any class using the class MySecret.
CodePudding user response:
if you have many properties it is more effective to use DataContract attribute instead of JsonIgnore
[DataContract]
public class MySecret
{
public int Secret { get; set; } = 1;
}
test
var a = new A();
JsonConvert.SerializeObject(a); // {"SecretA":{}}
if you still want to serialize some members you can add DataMember attribute
[System.Runtime.Serialization.DataContract]
public class MySecret
{
public int Secret { get; set; } = 1;
[DataMember]
public int SecretShow { get; set; } = 2;
}
test
{"SecretA":{"SecretShow":2}}
