JSchemaGenerator -> Suprimir propiedad durante la generación en el esquema
Quiero generar un esquema a partir de un objeto. Hay algunas propiedades que no deben ser serializadas. La supresión funciona bien. Cuando genero el esquema, estas propiedades aparecen ahí, lo cual está mal para mi caso. Pero no pude encontrar nada sobre cómo puedo suprimir esas propiedades en la generación del esquema. ¿Cómo puedo hacer esto?
public class Foo {
public object[] Bar { get; set; }
...
public bool ShouldSerializeBar()
{
return false;
}
}
...
using Newtonsoft.Json.Schema;
using Newtonsoft.Json.Schema.Generation;
JSchemaGenerator generator = new();
JSchema schema = generator.Generate(typeof(Foo)); // generar esquema a partir del objeto
{
...,
"Bar": { // <- esto no debería mostrarse en el esquema JSON
"type": [
"string",
"null"
]
}
}
davy.ai
Para evitar que ciertas propiedades aparezcan en el esquema JSON generado, puedes usar el atributo
[JsonIgnore]
en esas propiedades en tu claseFoo
. Este atributo le indica alJsonSerializer
que ignore esas propiedades durante la serialización.Aquí tienes un ejemplo de cómo puedes modificar tu código para excluir la propiedad
Bar
del esquema generado:Además de agregar el atributo
[JsonIgnore]
, también se debe agregarCustomAttributesSchemaGenerationProvider
para indicarle al generador que use atributos personalizados.Esta modificación asegurará que la propiedad
Bar
no se incluya en el esquema generado.