这是
的扩展Json conversion in ASP.NET for CQRS
由此我们创建了一个类来处理API的可选null-capable参数。
现在我希望swagger doc能够匹配该类,并且希望有一种通用的方法来实现这一目标
目前它看起来像这样:
{
"description": {
"value": "string",
"hasValue": true
}
}
当实际需要的JSON是这样的时候:
{
"description": "string"
}
与前一个问题一样,我对所涉及的图书馆有了新的认识,谷歌搜索也没有帮助,所以非常感谢对Swagger默认设置的帮助。
答案 0 :(得分:0)
所以我自己想出来了 - 以为我会发布答案以防其他人以后再使用它。
此类创建一个过滤文档的操作,将值从内部类型直接复制到外部类型
/// <summary>
/// Sets up the swagger documentation for the optional property
/// </summary>
public static class SwaggerOptionalPropertyFilter
{
/// <summary>
/// Get the action that applies the swagger documentation for the optional property
/// </summary>
public static Action<SwaggerDocument, HttpRequest> GetFilter()
{
return (document, request) =>
{
foreach (var kvp in document.Definitions)
{
if (!kvp.Key.Contains("OptionalProperty")) continue;
var val = kvp.Value.Properties.Values.FirstOrDefault();
if (val == null) continue;
foreach (var pi in typeof(Schema).GetProperties())
pi.SetValue(kvp.Value, pi.GetValue(val, null), null);
}
};
}
}
然后应用它就像改变一样简单:
app.UseSwagger();
要:
app.UseSwagger(c => { c.PreSerializeFilters.Add(SwaggerOptionalPropertyFilter.GetFilter()); });