Skip to content

Commit f6dedca

Browse files
authored
[Fundamentals] Use JsonSerializerOptions.Web (#58631)
1 parent de68d42 commit f6dedca

File tree

7 files changed

+22
-28
lines changed

7 files changed

+22
-28
lines changed

src/Components/WebAssembly/WebAssembly.Authentication/src/Services/SignOutSessionStateManager.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ namespace Microsoft.AspNetCore.Components.WebAssembly.Authentication;
1515
public class SignOutSessionStateManager
1616
{
1717
private readonly IJSRuntime _jsRuntime;
18-
private static readonly JsonSerializerOptions _serializationOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web);
1918

2019
/// <summary>
2120
/// Initialize a new instance of <see cref="SignOutSessionStateManager"/>.
@@ -35,7 +34,7 @@ public virtual ValueTask SetSignOutState()
3534
return _jsRuntime.InvokeVoidAsync(
3635
"sessionStorage.setItem",
3736
"Microsoft.AspNetCore.Components.WebAssembly.Authentication.SignOutState",
38-
JsonSerializer.Serialize(SignOutState.Instance, _serializationOptions));
37+
JsonSerializer.Serialize(SignOutState.Instance, JsonSerializerOptions.Web));
3938
}
4039

4140
/// <summary>
@@ -71,7 +70,7 @@ private async ValueTask<SignOutState> GetSignOutState()
7170
[DynamicDependency(JsonSerialized, typeof(SignOutState))]
7271
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "The correct members will be preserved by the above DynamicDependency.")]
7372
// This should use JSON source generation
74-
private static SignOutState DeserializeSignOutState(string result) => JsonSerializer.Deserialize<SignOutState>(result, _serializationOptions);
73+
private static SignOutState DeserializeSignOutState(string result) => JsonSerializer.Deserialize<SignOutState>(result, JsonSerializerOptions.Web);
7574

7675
private ValueTask ClearSignOutState()
7776
{

src/Http/Http.Results/test/JsonResultTests.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ namespace Microsoft.AspNetCore.Http.HttpResults;
1414

1515
public class JsonResultTests
1616
{
17-
private static readonly JsonSerializerOptions SerializerOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web);
18-
1917
[Fact]
2018
public async Task JsonResult_ExecuteAsync_WithNullValue_Works()
2119
{
@@ -117,7 +115,7 @@ public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
117115
// Arrange
118116
var details = new ProblemDetails();
119117

120-
var result = new JsonHttpResult<ProblemDetails>(details, jsonSerializerOptions: SerializerOptions);
118+
var result = new JsonHttpResult<ProblemDetails>(details, jsonSerializerOptions: JsonSerializerOptions.Web);
121119
var stream = new MemoryStream();
122120
var httpContext = new DefaultHttpContext()
123121
{
@@ -134,7 +132,7 @@ public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
134132
// Assert
135133
Assert.Equal(StatusCodes.Status500InternalServerError, httpContext.Response.StatusCode);
136134
stream.Position = 0;
137-
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, SerializerOptions);
135+
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, JsonSerializerOptions.Web);
138136
Assert.Equal("https://tools.ietf.org/html/rfc9110#section-15.6.1", responseDetails.Type);
139137
Assert.Equal("An error occurred while processing your request.", responseDetails.Title);
140138
Assert.Equal(StatusCodes.Status500InternalServerError, responseDetails.Status);
@@ -146,7 +144,7 @@ public async Task ExecuteAsync_UsesDefaults_ForValidationProblemDetails()
146144
// Arrange
147145
var details = new HttpValidationProblemDetails();
148146

149-
var result = new JsonHttpResult<HttpValidationProblemDetails>(details, jsonSerializerOptions: SerializerOptions);
147+
var result = new JsonHttpResult<HttpValidationProblemDetails>(details, jsonSerializerOptions: JsonSerializerOptions.Web);
150148
var stream = new MemoryStream();
151149
var httpContext = new DefaultHttpContext()
152150
{
@@ -163,7 +161,7 @@ public async Task ExecuteAsync_UsesDefaults_ForValidationProblemDetails()
163161
// Assert
164162
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
165163
stream.Position = 0;
166-
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, SerializerOptions);
164+
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, JsonSerializerOptions.Web);
167165
Assert.Equal("https://tools.ietf.org/html/rfc9110#section-15.5.1", responseDetails.Type);
168166
Assert.Equal("One or more validation errors occurred.", responseDetails.Title);
169167
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
@@ -195,7 +193,7 @@ public async Task ExecuteAsync_UsesDefaults_HttpStatusCodesWithoutTypes()
195193
// Assert
196194
Assert.Equal(StatusCodes.Status418ImATeapot, httpContext.Response.StatusCode);
197195
stream.Position = 0;
198-
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, SerializerOptions);
196+
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, JsonSerializerOptions.Web);
199197
Assert.Null(responseDetails.Type);
200198
Assert.Equal("I'm a teapot", responseDetails.Title);
201199
Assert.Equal(StatusCodes.Status418ImATeapot, responseDetails.Status);

src/Http/Http.Results/test/ProblemResultTests.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ namespace Microsoft.AspNetCore.Http.HttpResults;
1212

1313
public class ProblemResultTests
1414
{
15-
private static readonly JsonSerializerOptions SerializerOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web);
16-
1715
[Fact]
1816
public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
1917
{
@@ -37,7 +35,7 @@ public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
3735
// Assert
3836
Assert.Equal(StatusCodes.Status500InternalServerError, httpContext.Response.StatusCode);
3937
stream.Position = 0;
40-
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, SerializerOptions);
38+
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, JsonSerializerOptions.Web);
4139
Assert.Equal("https://tools.ietf.org/html/rfc9110#section-15.6.1", responseDetails.Type);
4240
Assert.Equal("An error occurred while processing your request.", responseDetails.Title);
4341
Assert.Equal(StatusCodes.Status500InternalServerError, responseDetails.Status);
@@ -69,7 +67,7 @@ public async Task ExecuteAsync_UsesDefaultsFromProblemDetailsService_ForProblemD
6967
// Assert
7068
Assert.Equal(StatusCodes.Status500InternalServerError, httpContext.Response.StatusCode);
7169
stream.Position = 0;
72-
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, SerializerOptions);
70+
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, JsonSerializerOptions.Web);
7371
Assert.Null(responseDetails.Type);
7472
Assert.Equal("An error occurred while processing your request.", responseDetails.Title);
7573
Assert.Equal(StatusCodes.Status500InternalServerError, responseDetails.Status);
@@ -98,7 +96,7 @@ public async Task ExecuteAsync_UsesDefaults_ForValidationProblemDetails()
9896
// Assert
9997
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
10098
stream.Position = 0;
101-
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, SerializerOptions);
99+
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, JsonSerializerOptions.Web);
102100
Assert.Equal("https://tools.ietf.org/html/rfc9110#section-15.5.1", responseDetails.Type);
103101
Assert.Equal("One or more validation errors occurred.", responseDetails.Title);
104102
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
@@ -130,7 +128,7 @@ public async Task ExecuteAsync_SetsTitleFromReasonPhrases_WhenNotInDefaults()
130128
// Assert
131129
Assert.Equal(StatusCodes.Status418ImATeapot, httpContext.Response.StatusCode);
132130
stream.Position = 0;
133-
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, SerializerOptions);
131+
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, JsonSerializerOptions.Web);
134132
Assert.Null(responseDetails.Type);
135133
Assert.Equal("I'm a teapot", responseDetails.Title);
136134
Assert.Equal(StatusCodes.Status418ImATeapot, responseDetails.Status);
@@ -162,7 +160,7 @@ public async Task ExecuteAsync_IncludeErrors_ForValidationProblemDetails()
162160
// Assert
163161
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
164162
stream.Position = 0;
165-
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, SerializerOptions);
163+
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, JsonSerializerOptions.Web);
166164
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
167165
var error = Assert.Single(responseDetails.Errors);
168166
Assert.Equal("testError", error.Key);

src/Http/Http.Results/test/ValidationProblemResultTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
3939
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
4040
Assert.Equal(details, result.ProblemDetails);
4141
stream.Position = 0;
42-
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, new JsonSerializerOptions(JsonSerializerDefaults.Web));
42+
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, JsonSerializerOptions.Web);
4343
Assert.Equal("https://tools.ietf.org/html/rfc9110#section-15.5.1", responseDetails.Type);
4444
Assert.Equal("One or more validation errors occurred.", responseDetails.Title);
4545
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
@@ -71,7 +71,7 @@ public async Task ExecuteAsync_UsesDefaultsFromProblemDetailsService_ForProblemD
7171
// Assert
7272
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
7373
stream.Position = 0;
74-
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, new JsonSerializerOptions(JsonSerializerDefaults.Web));
74+
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, JsonSerializerOptions.Web);
7575
Assert.Null(responseDetails.Type);
7676
Assert.Equal("One or more validation errors occurred.", responseDetails.Title);
7777
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);

src/Http/Routing/test/FunctionalTests/MinimalFormTests.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests;
1919

2020
public class MinimalFormTests
2121
{
22-
private static readonly JsonSerializerOptions SerializerOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web);
2322

2423
[Fact]
2524
public async Task MapPost_WithForm_ValidToken_Works()
@@ -65,7 +64,7 @@ public async Task MapPost_WithForm_ValidToken_Works()
6564
var response = await client.SendAsync(request);
6665
response.EnsureSuccessStatusCode();
6766
var body = await response.Content.ReadAsStringAsync();
68-
var result = JsonSerializer.Deserialize<Todo>(body, SerializerOptions);
67+
var result = JsonSerializer.Deserialize<Todo>(body, JsonSerializerOptions.Web);
6968
Assert.Equal("Test task", result.Name);
7069
Assert.False(result.IsCompleted);
7170
Assert.Equal(DateTime.Today.AddDays(1), result.DueDate);
@@ -125,7 +124,7 @@ public async Task MapRequestDelegate_WithForm_RequiresValidation_ValidToken_Work
125124
var response = await client.SendAsync(request);
126125
response.EnsureSuccessStatusCode();
127126
var body = await response.Content.ReadAsStringAsync();
128-
var result = JsonSerializer.Deserialize<Todo>(body, SerializerOptions);
127+
var result = JsonSerializer.Deserialize<Todo>(body, JsonSerializerOptions.Web);
129128
Assert.Equal("Test task", result.Name);
130129
Assert.False(result.IsCompleted);
131130
Assert.Equal(DateTime.Today.AddDays(1), result.DueDate);
@@ -286,7 +285,7 @@ public async Task MapPost_WithForm_WithoutAntiforgery_WithoutMiddleware_Works()
286285
var response = await client.SendAsync(request);
287286
response.EnsureSuccessStatusCode();
288287
var body = await response.Content.ReadAsStringAsync();
289-
var result = JsonSerializer.Deserialize<Todo>(body, SerializerOptions);
288+
var result = JsonSerializer.Deserialize<Todo>(body, JsonSerializerOptions.Web);
290289
Assert.Equal("Test task", result.Name);
291290
Assert.False(result.IsCompleted);
292291
Assert.Equal(DateTime.Today.AddDays(1), result.DueDate);
@@ -333,7 +332,7 @@ public async Task MapPost_WithForm_WithoutAntiforgery_AndRouteGroup_WithoutMiddl
333332
var response = await client.SendAsync(request);
334333
response.EnsureSuccessStatusCode();
335334
var body = await response.Content.ReadAsStringAsync();
336-
var result = JsonSerializer.Deserialize<Todo>(body, SerializerOptions);
335+
var result = JsonSerializer.Deserialize<Todo>(body, JsonSerializerOptions.Web);
337336
Assert.Equal("Test task", result.Name);
338337
Assert.False(result.IsCompleted);
339338
Assert.Equal(DateTime.Today.AddDays(1), result.DueDate);
@@ -493,7 +492,7 @@ public async Task MapPost_WithForm_ValidToken_RequestSizeLimit_Works(bool hasLim
493492
var response = await client.SendAsync(request);
494493
response.EnsureSuccessStatusCode();
495494
var body = await response.Content.ReadAsStringAsync();
496-
var result = JsonSerializer.Deserialize<Todo>(body, SerializerOptions);
495+
var result = JsonSerializer.Deserialize<Todo>(body, JsonSerializerOptions.Web);
497496
Assert.Equal("Test task", result.Name);
498497
Assert.False(result.IsCompleted);
499498
Assert.Equal(DateTime.Today.AddDays(1), result.DueDate);

src/Mvc/Mvc.Core/test/Formatters/SystemTextJsonOutputFormatterTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public async Task WriteResponseBodyAsync_ForLargeAsyncEnumerable()
8888
{
8989
// Arrange
9090
var expected = new MemoryStream();
91-
await JsonSerializer.SerializeAsync(expected, LargeAsync(), new JsonSerializerOptions(JsonSerializerDefaults.Web));
91+
await JsonSerializer.SerializeAsync(expected, LargeAsync(), JsonSerializerOptions.Web);
9292
var formatter = GetOutputFormatter();
9393
var mediaType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8");
9494
var encoding = CreateOrGetSupportedEncoding(formatter, "utf-8", isDefaultEncoding: true);

src/Mvc/Mvc.Core/test/Infrastructure/DefaultApiProblemDetailsWriterTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public async Task WriteAsync_Works()
4242

4343
//Assert
4444
stream.Position = 0;
45-
var problemDetails = await JsonSerializer.DeserializeAsync<ProblemDetails>(stream, new JsonSerializerOptions(JsonSerializerDefaults.Web));
45+
var problemDetails = await JsonSerializer.DeserializeAsync<ProblemDetails>(stream, JsonSerializerOptions.Web);
4646
Assert.NotNull(problemDetails);
4747
Assert.Equal(expectedProblem.Status, problemDetails.Status);
4848
Assert.Equal(expectedProblem.Type, problemDetails.Type);
@@ -81,7 +81,7 @@ public async Task WriteAsync_Works_WhenReplacingProblemDetailsUsingSetter()
8181

8282
//Assert
8383
stream.Position = 0;
84-
var problemDetails = await JsonSerializer.DeserializeAsync<ProblemDetails>(stream, new JsonSerializerOptions(JsonSerializerDefaults.Web));
84+
var problemDetails = await JsonSerializer.DeserializeAsync<ProblemDetails>(stream, JsonSerializerOptions.Web);
8585
Assert.NotNull(problemDetails);
8686
Assert.Equal(expectedProblem.Status, problemDetails.Status);
8787
Assert.Equal(expectedProblem.Type, problemDetails.Type);

0 commit comments

Comments
 (0)