Я использую пакет Newtonsoft.Json.Schema для создания схем JSON. В настоящее время схемы не содержат свойства «title», поэтому я создал пользовательский поставщик, следующий за the example in the documentation, однако поставщик работает только на родительском узле и пропускает все узлы свойств.Как создать пользовательский JSchemaGenerationProvider, который добавляет атрибут title как к модели, так и к свойствам модели?
class User {
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreatedDate { get; set; }
}
class TitleProvider : JSchemaGenerationProvider {
public override JSchema GetSchema(JSchemaTypeGenerationContext context) {
var schema = new JSchemaGenerator().Generate(context.ObjectType);
schema.Title = "foo";
return schema;
}
}
public class Program {
public static void Main() {
var generator = new JSchemaGenerator();
generator.GenerationProviders.Add(new TitleProvider());
var schema = generator.Generate(typeof(User));
Console.WriteLine(schema);
}
}
// OUTPUT:
//{
// "title": "foo",
// "type": "object",
// "properties": {
// "Id": {
// "type": "integer"
// },
// "Name": {
// "type": [
// "string",
// "null"
// ]
// },
// "CreatedDate": {
// "type": "string"
// }
// },
// "required": [
// "Id",
// "Name",
// "CreatedDate"
// ]
//}
Как настроить этот поставщик для запуска на узлах свойств (по аналогии с примером, приведенным в связанной документации)?
Другие Примечания:
- если вы возвращаете нуль из метода поставщика
GetSchema
, это перебрать все свойства (которые я наблюдал в отладчике), хотя он не имеет функциональности я хочу тогда - , если добавить в блок, если пропустить, когда ток context.ObjectType обладает свойствами, это перебрать все свойства, но только добавляет заголовок первого свойства
Большое спасибо за размещение этого, он оказался очень полезным для меня! – SebastianC