diff --git a/src/Umbraco.Cms.Api.Management/DependencyInjection/JsonBuilderExtensions.cs b/src/Umbraco.Cms.Api.Management/DependencyInjection/JsonBuilderExtensions.cs index 270038dba3..3322b28978 100644 --- a/src/Umbraco.Cms.Api.Management/DependencyInjection/JsonBuilderExtensions.cs +++ b/src/Umbraco.Cms.Api.Management/DependencyInjection/JsonBuilderExtensions.cs @@ -1,6 +1,5 @@ using Microsoft.Extensions.DependencyInjection; using Umbraco.Cms.Core.DependencyInjection; -using Umbraco.Cms.Api.Management.Serialization; using Umbraco.Cms.Api.Management.Services; namespace Umbraco.Cms.Api.Management.DependencyInjection; @@ -10,8 +9,7 @@ public static class JsonBuilderExtensions internal static IUmbracoBuilder AddJson(this IUmbracoBuilder builder) { builder.Services - .AddTransient() - .AddTransient(); + .AddTransient(); return builder; } diff --git a/src/Umbraco.Cms.Api.Management/Serialization/ISystemTextJsonSerializer.cs b/src/Umbraco.Cms.Api.Management/Serialization/ISystemTextJsonSerializer.cs deleted file mode 100644 index 8ec90b6740..0000000000 --- a/src/Umbraco.Cms.Api.Management/Serialization/ISystemTextJsonSerializer.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Umbraco.Cms.Core.Serialization; - -namespace Umbraco.Cms.Api.Management.Serialization; - -public interface ISystemTextJsonSerializer : IJsonSerializer -{ -} diff --git a/src/Umbraco.Cms.Api.Management/Serialization/SystemTextJsonSerializer.cs b/src/Umbraco.Cms.Api.Management/Serialization/SystemTextJsonSerializer.cs deleted file mode 100644 index e423f2ad2c..0000000000 --- a/src/Umbraco.Cms.Api.Management/Serialization/SystemTextJsonSerializer.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Text.Json; - -namespace Umbraco.Cms.Api.Management.Serialization; - -// TOOD: move this to Infrastructure.Serialization + get rid of ISystemTextJsonSerializer -public class SystemTextJsonSerializer : ISystemTextJsonSerializer -{ - private JsonSerializerOptions _jsonSerializerOptions; - public SystemTextJsonSerializer() - { - _jsonSerializerOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; - } - public string Serialize(object? input) => JsonSerializer.Serialize(input, _jsonSerializerOptions); - - public T? Deserialize(string input) => JsonSerializer.Deserialize(input, _jsonSerializerOptions); - - public T? DeserializeSubset(string input, string key) => throw new NotSupportedException(); -} diff --git a/src/Umbraco.Cms.Api.Management/Services/JsonPatchService.cs b/src/Umbraco.Cms.Api.Management/Services/JsonPatchService.cs index af10432492..850e4a2a17 100644 --- a/src/Umbraco.Cms.Api.Management/Services/JsonPatchService.cs +++ b/src/Umbraco.Cms.Api.Management/Services/JsonPatchService.cs @@ -2,21 +2,22 @@ using Json.Patch; using Umbraco.Cms.Api.Management.Serialization; using Umbraco.Cms.Api.Management.ViewModels.JsonPatch; +using Umbraco.Cms.Core.Serialization; namespace Umbraco.Cms.Api.Management.Services; public class JsonPatchService : IJsonPatchService { - private readonly ISystemTextJsonSerializer _systemTextJsonSerializer; + private readonly IJsonSerializer _jsonSerializer; - public JsonPatchService(ISystemTextJsonSerializer systemTextJsonSerializer) => _systemTextJsonSerializer = systemTextJsonSerializer; + public JsonPatchService(IJsonSerializer jsonSerializer) => _jsonSerializer = jsonSerializer; public PatchResult? Patch(JsonPatchViewModel[] patchViewModel, object objectToPatch) { - var patchString = _systemTextJsonSerializer.Serialize(patchViewModel); + var patchString = _jsonSerializer.Serialize(patchViewModel); - var docString = _systemTextJsonSerializer.Serialize(objectToPatch); - JsonPatch? patch = _systemTextJsonSerializer.Deserialize(patchString); + var docString = _jsonSerializer.Serialize(objectToPatch); + JsonPatch? patch = _jsonSerializer.Deserialize(patchString); var doc = JsonNode.Parse(docString); return patch?.Apply(doc); } diff --git a/src/Umbraco.Infrastructure/Serialization/ContextualJsonSerializer.cs b/src/Umbraco.Infrastructure/Serialization/ContextualJsonSerializer.cs index 0645e3a30e..2880611ccb 100644 --- a/src/Umbraco.Infrastructure/Serialization/ContextualJsonSerializer.cs +++ b/src/Umbraco.Infrastructure/Serialization/ContextualJsonSerializer.cs @@ -1,6 +1,4 @@ -using System.Text.Json; -using System.Text.Json.Serialization; -using Umbraco.Cms.Core.Serialization; +using Umbraco.Cms.Core.Serialization; using Umbraco.Cms.Core.Web; namespace Umbraco.Cms.Infrastructure.Serialization; @@ -47,24 +45,6 @@ public class ContextualJsonSerializer : IJsonSerializer return _jsonNetSerializer; } - - private class SystemTextJsonSerializer : IJsonSerializer - { - private JsonSerializerOptions _jsonSerializerOptions; - - public SystemTextJsonSerializer() - { - _jsonSerializerOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; - _jsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); - _jsonSerializerOptions.Converters.Add(new JsonObjectConverter()); - } - - public string Serialize(object? input) => JsonSerializer.Serialize(input, _jsonSerializerOptions); - - public T? Deserialize(string input) => JsonSerializer.Deserialize(input, _jsonSerializerOptions); - - public T? DeserializeSubset(string input, string key) => throw new NotSupportedException(); - } } diff --git a/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs b/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs new file mode 100644 index 0000000000..17a4e0fc1a --- /dev/null +++ b/src/Umbraco.Infrastructure/Serialization/SystemTextJsonSerializer.cs @@ -0,0 +1,24 @@ +using System.Text.Json; +using System.Text.Json.Serialization; +using Umbraco.Cms.Core.Serialization; + +namespace Umbraco.Cms.Infrastructure.Serialization; + +public class SystemTextJsonSerializer : IJsonSerializer +{ + private readonly JsonSerializerOptions _jsonSerializerOptions; + + public SystemTextJsonSerializer() + { + _jsonSerializerOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; + _jsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); + // we may need to add JsonObjectConverter at some point, but for the time being things work fine without + // _jsonSerializerOptions.Converters.Add(new JsonObjectConverter()); + } + + public string Serialize(object? input) => JsonSerializer.Serialize(input, _jsonSerializerOptions); + + public T? Deserialize(string input) => JsonSerializer.Deserialize(input, _jsonSerializerOptions); + + public T? DeserializeSubset(string input, string key) => throw new NotSupportedException(); +}