Sie könnten einen Dummy-Konverter auf die Eigenschaften in Frage hinzufügen, die nichts tut:
public class NoConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
// Note - not called when attached directly via [JsonConverter(typeof(NoConverter))]
throw new NotImplementedException();
}
public override bool CanRead { get { return false; } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanWrite { get { return false; } }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
es mit [JsonConverter(typeof(NoConverter))]
der Eigenschaft Dann befestigen. Wenn Sie dies getan haben, ersetzt der Konverter JsonConverter
den global angegebenen Konverter, aber da CanRead
und CanWrite
beide falsch zurückgeben, wird keine Konvertierung durchgeführt. Für Sammlungen von Enums können Sie [JsonProperty(ItemConverterType = typeof(NoConverter))]
verwenden.
Zum Beispiel, wenn Sie die Typen definieren:
public enum Foo { A, B, C }
public class RootObject
{
[JsonConverter(typeof(NoConverter))]
public Foo FooAsInteger { get; set; }
public Foo FooAsString { get; set; }
}
Dann
var root = new RootObject { FooAsInteger = Foo.B, FooAsString = Foo.B };
var json = JsonConvert.SerializeObject(root, Formatting.Indented, new StringEnumConverter());
Console.WriteLine(json);
erzeugt die Ausgabe
{
"FooAsInteger": 1,
"FooAsString": "B"
}
Probe fiddle.
Idealerweise sollten Sie nur die erforderlichen Eigenschaften anstelle der globalen Einstellung dekorieren. –
Möchten Sie bestimmte Eigenschaften oder bestimmte Enums deaktivieren? – dbc
@dcb Für bestimmte Eigenschaften, wahrscheinlich mithilfe eines Attributs. – orad