diff --git a/src/WireMock.Net.Extensions.Routing/WireMock.Net.Extensions.Routing.csproj b/src/WireMock.Net.Extensions.Routing/WireMock.Net.Extensions.Routing.csproj
index 2bffa845..ce12dec3 100644
--- a/src/WireMock.Net.Extensions.Routing/WireMock.Net.Extensions.Routing.csproj
+++ b/src/WireMock.Net.Extensions.Routing/WireMock.Net.Extensions.Routing.csproj
@@ -25,7 +25,7 @@
-
+
diff --git a/src/WireMock.Net.Minimal/Matchers/JsonMatcher.cs b/src/WireMock.Net.Minimal/Matchers/JsonMatcher.cs
index 51635dac..1957e497 100644
--- a/src/WireMock.Net.Minimal/Matchers/JsonMatcher.cs
+++ b/src/WireMock.Net.Minimal/Matchers/JsonMatcher.cs
@@ -1,10 +1,12 @@
// Copyright © WireMock.Net
+using System.Collections;
+using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Stef.Validation;
using WireMock.Extensions;
+using WireMock.Serialization;
using WireMock.Util;
-using JsonUtils = WireMock.Util.JsonUtils;
namespace WireMock.Matchers;
@@ -68,7 +70,7 @@ public class JsonMatcher : IJsonMatcher
Regex = regex;
Value = value;
- _valueAsJToken = JsonUtils.ConvertValueToJToken(value);
+ _valueAsJToken = ConvertValueToJToken(value);
}
///
@@ -82,7 +84,7 @@ public class JsonMatcher : IJsonMatcher
{
try
{
- var inputAsJToken = JsonUtils.ConvertValueToJToken(input);
+ var inputAsJToken = ConvertValueToJToken(input);
var match = IsMatch(RenameJToken(_valueAsJToken), RenameJToken(inputAsJToken));
score = MatchScores.ToScore(match);
@@ -102,7 +104,7 @@ public class JsonMatcher : IJsonMatcher
return $"new {Name}" +
$"(" +
$"{MatchBehaviour.GetFullyQualifiedEnumValue()}, " +
- $"{CSharpFormatter.ConvertToAnonymousObjectDefinition(Value, 3)}, " +
+ $"{CSharpFormatter.ConvertToAnonymousObjectDefinition(Value, 3)}, " +
$"{CSharpFormatter.ToCSharpBooleanLiteral(IgnoreCase)}, " +
$"{CSharpFormatter.ToCSharpBooleanLiteral(Regex)}" +
$")";
@@ -240,6 +242,18 @@ public class JsonMatcher : IJsonMatcher
return new JObject(renamedProperties);
}
+ private static JToken ConvertValueToJToken(object value)
+ {
+ // Check if JToken, string, IEnumerable or object
+ return value switch
+ {
+ JToken tokenValue => tokenValue,
+ string stringValue => JsonConvert.DeserializeObject(stringValue, JsonSerializationConstants.JsonDeserializerSettingsWithDateParsingNone)!,
+ IEnumerable enumerableValue => JArray.FromObject(enumerableValue),
+ _ => JObject.FromObject(value),
+ };
+ }
+
private static string? ToUpper(string? input)
{
return input?.ToUpperInvariant();
diff --git a/src/WireMock.Net.Minimal/ResponseBuilders/Response.cs b/src/WireMock.Net.Minimal/ResponseBuilders/Response.cs
index 52343d8a..fdd9b575 100644
--- a/src/WireMock.Net.Minimal/ResponseBuilders/Response.cs
+++ b/src/WireMock.Net.Minimal/ResponseBuilders/Response.cs
@@ -197,7 +197,7 @@ public partial class Response : IResponseBuilder
if (ProxyAndRecordSettings != null && _httpClientForProxy != null)
{
- string RemoveFirstOccurrence(string source, string find)
+ static string RemoveFirstOccurrence(string source, string find)
{
int place = source.IndexOf(find, StringComparison.OrdinalIgnoreCase);
return place >= 0 ? source.Remove(place, find.Length) : source;
@@ -265,7 +265,7 @@ public partial class Response : IResponseBuilder
var decoded = await protoBufMatcher.DecodeAsync(requestMessage.BodyData?.BodyAsBytes).ConfigureAwait(false);
if (decoded != null)
{
- requestMessageImplementation.BodyAsJson = JsonUtils.ConvertValueToJToken(decoded);
+ requestMessageImplementation.BodyAsJson = settings.DefaultJsonSerializer.ToJsonToken(decoded);
}
}
}
diff --git a/src/WireMock.Net.Minimal/Server/WireMockServer.Admin.cs b/src/WireMock.Net.Minimal/Server/WireMockServer.Admin.cs
index 225623ad..ed92e458 100644
--- a/src/WireMock.Net.Minimal/Server/WireMockServer.Admin.cs
+++ b/src/WireMock.Net.Minimal/Server/WireMockServer.Admin.cs
@@ -914,16 +914,16 @@ public partial class WireMockServer
};
}
- private static T DeserializeObject(IRequestMessage requestMessage)
+ private T DeserializeObject(IRequestMessage requestMessage)
{
switch (requestMessage.BodyData?.DetectedBodyType)
{
- case BodyType.String:
- case BodyType.FormUrlEncoded:
- return JsonUtils.DeserializeObject(requestMessage.BodyData.BodyAsString!);
+ case BodyType.String when requestMessage.BodyData?.BodyAsString != null:
+ case BodyType.FormUrlEncoded when requestMessage.BodyData?.BodyAsString != null:
+ return _settings.DefaultJsonSerializer.Deserialize(requestMessage.BodyData.BodyAsString)!;
case BodyType.Json when requestMessage.BodyData?.BodyAsJson != null:
- return ((JObject)requestMessage.BodyData.BodyAsJson).ToObject()!;
+ return _settings.DefaultJsonSerializer.ParseJsonToken(requestMessage.BodyData.BodyAsJson)!;
default:
throw new NotSupportedException();
diff --git a/src/WireMock.Net.Minimal/Server/WireMockServer.ConvertMapping.cs b/src/WireMock.Net.Minimal/Server/WireMockServer.ConvertMapping.cs
index fa27c1a2..9c6f80f6 100644
--- a/src/WireMock.Net.Minimal/Server/WireMockServer.ConvertMapping.cs
+++ b/src/WireMock.Net.Minimal/Server/WireMockServer.ConvertMapping.cs
@@ -1,6 +1,5 @@
// Copyright © WireMock.Net
-using System.Linq;
using Stef.Validation;
using WireMock.Admin.Mappings;
using WireMock.Matchers;
@@ -153,7 +152,7 @@ public partial class WireMockServer
}
else
{
- var clientIPModel = JsonUtils.ParseJTokenToObject(requestModel.ClientIP);
+ var clientIPModel = _settings.DefaultJsonSerializer.ParseJsonToken(requestModel.ClientIP);
if (clientIPModel.Matchers != null)
{
requestBuilder = requestBuilder.WithPath(clientIPModel.Matchers.Select(_matcherMapper.Map).OfType().ToArray());
@@ -169,7 +168,7 @@ public partial class WireMockServer
}
else
{
- var pathModel = JsonUtils.ParseJTokenToObject(requestModel.Path);
+ var pathModel = _settings.DefaultJsonSerializer.ParseJsonToken(requestModel.Path);
if (pathModel.Matchers != null)
{
var matchOperator = StringUtils.ParseMatchOperator(pathModel.MatchOperator);
@@ -185,7 +184,7 @@ public partial class WireMockServer
}
else
{
- var urlModel = JsonUtils.ParseJTokenToObject(requestModel.Url);
+ var urlModel = _settings.DefaultJsonSerializer.ParseJsonToken(requestModel.Url);
if (urlModel.Matchers != null)
{
var matchOperator = StringUtils.ParseMatchOperator(urlModel.MatchOperator);
@@ -271,7 +270,7 @@ public partial class WireMockServer
return requestBuilder;
}
- private static IResponseBuilder InitResponseBuilder(ResponseModel responseModel)
+ private IResponseBuilder InitResponseBuilder(ResponseModel responseModel)
{
var responseBuilder = Response.Create();
@@ -336,7 +335,7 @@ public partial class WireMockServer
}
else
{
- var headers = JsonUtils.ParseJTokenToObject(entry.Value);
+ var headers = _settings.DefaultJsonSerializer.ParseJsonToken(entry.Value);
responseBuilder.WithHeader(entry.Key, headers);
}
}
@@ -362,7 +361,7 @@ public partial class WireMockServer
}
else
{
- var headers = JsonUtils.ParseJTokenToObject(entry.Value);
+ var headers = _settings.DefaultJsonSerializer.ParseJsonToken(entry.Value);
responseBuilder.WithTrailingHeader(entry.Key, headers);
}
}
diff --git a/src/WireMock.Net.NUnit/WireMock.Net.NUnit.csproj b/src/WireMock.Net.NUnit/WireMock.Net.NUnit.csproj
index 4edff70d..5a73b4ad 100644
--- a/src/WireMock.Net.NUnit/WireMock.Net.NUnit.csproj
+++ b/src/WireMock.Net.NUnit/WireMock.Net.NUnit.csproj
@@ -25,7 +25,7 @@
-
+
diff --git a/src/WireMock.Net.RestClient/WireMock.Net.RestClient.csproj b/src/WireMock.Net.RestClient/WireMock.Net.RestClient.csproj
index 34dae46c..85c1e331 100644
--- a/src/WireMock.Net.RestClient/WireMock.Net.RestClient.csproj
+++ b/src/WireMock.Net.RestClient/WireMock.Net.RestClient.csproj
@@ -33,7 +33,7 @@
-
+
diff --git a/src/WireMock.Net.Shared/Util/JsonUtils.cs b/src/WireMock.Net.Shared/Util/JsonUtils.cs
index 448d8359..4b558a4a 100644
--- a/src/WireMock.Net.Shared/Util/JsonUtils.cs
+++ b/src/WireMock.Net.Shared/Util/JsonUtils.cs
@@ -1,6 +1,5 @@
// Copyright © WireMock.Net
-using System.Collections;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using Newtonsoft.Json;
@@ -50,17 +49,6 @@ internal static class JsonUtils
return Encoding.UTF8.GetBytes(json);
}
- ///
- /// Load a Newtonsoft.Json.Linq.JObject from a string that contains JSON.
- /// Using : DateParseHandling = DateParseHandling.None
- ///
- /// A System.String that contains JSON.
- /// A Newtonsoft.Json.Linq.JToken populated from the string that contains JSON.
- public static JToken Parse(string json)
- {
- return JsonConvert.DeserializeObject(json, JsonSerializationConstants.JsonDeserializerSettingsWithDateParsingNone)!;
- }
-
///
/// Deserializes the JSON to a .NET object.
/// Using : DateParseHandling = DateParseHandling.None
@@ -94,38 +82,4 @@ internal static class JsonUtils
return default;
}
}
-
- public static T ParseJTokenToObject(object? value)
- {
- if (value != null && value.GetType() == typeof(T))
- {
- return (T)value;
- }
-
- return value switch
- {
- JToken tokenValue => tokenValue.ToObject()!,
-
- _ => throw new NotSupportedException($"Unable to convert value to {typeof(T)}.")
- };
- }
-
- public static JToken ConvertValueToJToken(object value)
- {
- // Check if JToken, string, IEnumerable or object
- switch (value)
- {
- case JToken tokenValue:
- return tokenValue;
-
- case string stringValue:
- return Parse(stringValue);
-
- case IEnumerable enumerableValue:
- return JArray.FromObject(enumerableValue);
-
- default:
- return JObject.FromObject(value);
- }
- }
}
\ No newline at end of file
diff --git a/src/WireMock.Net.Shared/WireMock.Net.Shared.csproj b/src/WireMock.Net.Shared/WireMock.Net.Shared.csproj
index 981b915d..ac51c510 100644
--- a/src/WireMock.Net.Shared/WireMock.Net.Shared.csproj
+++ b/src/WireMock.Net.Shared/WireMock.Net.Shared.csproj
@@ -30,8 +30,8 @@
-
-
+
+