From ebc295ecd36c46087f46f0bb993ba9fb8e7c6079 Mon Sep 17 00:00:00 2001 From: martincostello Date: Thu, 5 Feb 2026 13:34:38 +0000 Subject: [PATCH] Fix document URL serialization Fix URLs not being serialized correctly if a custom `JsonSerializerOptions` is provided. See https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/3772#discussion_r2769015200. --- .../SwaggerUIMiddleware.cs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/Swashbuckle.AspNetCore.SwaggerUI/SwaggerUIMiddleware.cs b/src/Swashbuckle.AspNetCore.SwaggerUI/SwaggerUIMiddleware.cs index 42315d0aaa..80f095322b 100644 --- a/src/Swashbuckle.AspNetCore.SwaggerUI/SwaggerUIMiddleware.cs +++ b/src/Swashbuckle.AspNetCore.SwaggerUI/SwaggerUIMiddleware.cs @@ -183,16 +183,12 @@ private async Task RespondWithFile(HttpContext context, string fileName) private async Task RespondWithDocumentUrls(HttpContext context) { var response = context.Response; + var urls = _options.ConfigObject.Urls ?? []; - string json = "[]"; - - if (_jsonSerializerOptions is null) - { - var l = new List(_options.ConfigObject.Urls); - json = JsonSerializer.Serialize(l, SwaggerUIOptionsJsonContext.Default.ListUrlDescriptor); - } - - json ??= JsonSerializer.Serialize(_options.ConfigObject.Urls, _jsonSerializerOptions); + string json = + _jsonSerializerOptions is { } options ? + JsonSerializer.Serialize(urls, options) : + JsonSerializer.Serialize([.. urls], SwaggerUIOptionsJsonContext.Default.ListUrlDescriptor); var etag = GetETag(json); var ifNoneMatch = context.Request.Headers.IfNoneMatch;