diff --git a/src/Modrinth.Net/Http/Requester.cs b/src/Modrinth.Net/Http/Requester.cs index 9a179bd..b09f650 100644 --- a/src/Modrinth.Net/Http/Requester.cs +++ b/src/Modrinth.Net/Http/Requester.cs @@ -34,6 +34,8 @@ public class Requester : IRequester public Requester(ModrinthClientConfig config, HttpClient? httpClient = null) { _config = config; + if (config.JsonSerializerContext != null) + _jsonSerializerOptions.TypeInfoResolverChain.Add(config.JsonSerializerContext); _semaphore = new SemaphoreSlim(_config.MaxConcurrentRequests); HttpClient = httpClient ?? new HttpClient(); diff --git a/src/Modrinth.Net/ModrinthClientConfig.cs b/src/Modrinth.Net/ModrinthClientConfig.cs index dfca14f..8c6d9b7 100644 --- a/src/Modrinth.Net/ModrinthClientConfig.cs +++ b/src/Modrinth.Net/ModrinthClientConfig.cs @@ -1,4 +1,6 @@ -namespace Modrinth; +using System.Text.Json.Serialization.Metadata; + +namespace Modrinth; /// /// Object containing options for @@ -41,6 +43,12 @@ public class ModrinthClientConfig /// Default is 100. /// public int BatchSize { get; set; } = 100; + + /// + /// The JSON serializer context to use for serialization and deserialization. + /// If null, the client will use the default serializer with reflection-based serialization, which is less performant. + /// + public IJsonTypeInfoResolver? JsonSerializerContext { get; set; } /// /// Validates the configuration options.