在模型中使用 JToken 时的 Swagger Schema 自引用

Swagger Schema self referencing when JToken is used in the model

我的 API 模型有一个 属性 类型的 JArray,如

public class MyModel
{
   public JArray Credentials { get; set; }
   public string Property1 {get;set;}
}

对于凭据 Swagger 生成类似

"credentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JToken"
            },
            "nullable": true
          }


架构就像

 "JToken": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JToken"
        }
      }

这里JToken是自引用的,如何避免这种自引用?

在生成 Swagger 文档时映射了如下所示的 JToken 类型,解决了自引用问题

services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
                c.MapType<JToken>(() => new OpenApiSchema { Type = typeof(JToken).Name });
            });