diff --git a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Get.AsyncEnumerable.cs b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Get.AsyncEnumerable.cs index 057bf872692c3..cf32fc760836a 100644 --- a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Get.AsyncEnumerable.cs +++ b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Get.AsyncEnumerable.cs @@ -135,10 +135,7 @@ public static partial class HttpClientJsonExtensions JsonSerializerOptions? options, CancellationToken cancellationToken) { - options ??= JsonSerializerOptions.Default; - options.MakeReadOnly(); - - var jsonTypeInfo = (JsonTypeInfo)options.GetTypeInfo(typeof(TValue)); + var jsonTypeInfo = (JsonTypeInfo)JsonHelpers.GetJsonTypeInfo(typeof(TValue), options); return FromJsonStreamAsyncCore(client, requestUri, jsonTypeInfo, cancellationToken); } diff --git a/src/libraries/System.Net.Http.Json/tests/FunctionalTests/HttpClientJsonExtensionsTests.cs b/src/libraries/System.Net.Http.Json/tests/FunctionalTests/HttpClientJsonExtensionsTests.cs index 328f28f1bbf1e..fee02cc882295 100644 --- a/src/libraries/System.Net.Http.Json/tests/FunctionalTests/HttpClientJsonExtensionsTests.cs +++ b/src/libraries/System.Net.Http.Json/tests/FunctionalTests/HttpClientJsonExtensionsTests.cs @@ -580,6 +580,43 @@ public async Task GetFromJsonAsAsyncEnumerable_EnforcesTimeoutOnInitialRequest() await Task.Delay(TimeSpan.FromMilliseconds(10)); } } + + [Fact] + public async Task GetFromJsonAsAsyncEnumerable_SerializerUsesCamelCase() + { + using var client = new HttpClient(new CustomResponseHandler((r, c) => + { + string json = """[{"value":1},{"value":2}]"""; + HttpResponseMessage response = new() + { + Content = new StringContent(json) + }; + return Task.FromResult(response); + })); + + await foreach (var m in client.GetFromJsonAsAsyncEnumerable("http://dummyUrl")) + { + Assert.True(m.Value > 0); + } + } + + [Fact] + public async Task GetFromJsonAsAsyncEnumerable_CustomSerializerOptions() + { + using var client = new HttpClient(new CustomResponseHandler((r, c) => + { + string json = """[{"Value":1},{"Value":2}]"""; + HttpResponseMessage response = new() + { + Content = new StringContent(json) + }; + return Task.FromResult(response); + })); + await foreach (var m in client.GetFromJsonAsAsyncEnumerable("http://dummyUrl", JsonSerializerOptions.Default)) + { + Assert.True(m.Value > 0); + } + } } } @@ -593,3 +630,8 @@ public CustomResponseHandler( protected override Task SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) => _func(request, cancellationToken); } + +file sealed class TestModel +{ + public int Value { get; set; } +} \ No newline at end of file