Files
WireMock.Net/src/WireMock.Net.Minimal/Serialization/MappingSerializer.cs
Stef Heyenrath 21cc70e77b .
2026-04-19 11:05:55 +02:00

31 lines
1.1 KiB
C#

// Copyright © WireMock.Net
using JsonConverter.Abstractions;
using JsonConverter.Abstractions.Models;
namespace WireMock.Serialization;
internal class MappingSerializer(IJsonConverter jsonConverter)
{
internal T[] DeserializeJsonToArray<T>(string value)
{
switch (JsonTypeHelper.GetJsonType(value))
{
case JsonType.Array:
return jsonConverter.Deserialize<T[]>(value, JsonSerializationConstants.JsonConverterOptionsWithDateParsingNone)!;
case JsonType.Object:
var singleResult = jsonConverter.Deserialize<T>(value, JsonSerializationConstants.JsonConverterOptionsWithDateParsingNone);
return [singleResult!];
default:
throw new InvalidOperationException("Cannot deserialize the provided value to an array or object.");
}
}
internal T[] DeserializeObjectToArray<T>(object value)
{
var json = jsonConverter.Serialize(value, JsonSerializationConstants.JsonConverterOptionsWithDateParsingNone);
return DeserializeJsonToArray<T>(json);
}
}