You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/src/Recyclarr.TrashLib/Pipelines/CustomFormat/Models/FieldsArrayJsonConverter.cs

35 lines
1.0 KiB

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Recyclarr.TrashLib.Pipelines.CustomFormat.Models;
public class FieldsArrayJsonConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
{
serializer.Serialize(writer, value);
}
public override object? ReadJson(
JsonReader reader,
Type objectType,
object? existingValue,
JsonSerializer serializer)
{
var token = JToken.Load(reader);
// ReSharper disable once SwitchExpressionHandlesSomeKnownEnumValuesWithExceptionInDefault
return token.Type switch
{
JTokenType.Object => new[] {token.ToObject<CustomFormatFieldData>()},
JTokenType.Array => token.ToObject<CustomFormatFieldData[]>(),
_ => throw new InvalidOperationException("Unsupported token type for CustomFormatFieldData")
};
}
public override bool CanConvert(Type objectType)
{
return objectType.IsArray;
}
}