using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace Iceshrimp.Backend.Core.Federation.ActivityStreams; public static class ASSerializer { public class ListSingleObjectConverter : JsonConverter { public override bool CanWrite => false; public override bool CanConvert(Type objectType) { return true; } public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.StartArray) { var obj = JArray.Load(reader); var list = obj.ToObject>(); return list == null || list.Count == 0 ? null : list[0]; } if (reader.TokenType == JsonToken.StartObject) { var obj = JObject.Load(reader); return obj.ToObject(); } return null; } public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) { throw new NotImplementedException(); } } }