[backend/federation] Fix (de-)serialization of unordered ASCollection(Page) objects (ISH-427)

This commit is contained in:
Laura Hausmann 2024-07-22 18:52:42 +02:00
parent b62a0ad46e
commit 8345f35a5f
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
2 changed files with 14 additions and 1 deletions

View file

@ -119,7 +119,7 @@ internal class ASCollectionItemsConverter : JsonConverter
var obj = JArray.Load(reader);
return obj.Count == 0
? null
: obj.SelectToken("$.[*].@list")?.Children().Select(ASObject.Deserialize).OfType<ASObject>().ToList();
: obj.Select(ASObject.Deserialize).OfType<ASObject>().ToList();
}
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)

View file

@ -43,6 +43,19 @@ internal sealed class ASOrderedCollectionItemsConverter : ASCollectionItemsConve
serializer.Serialize(writer, value);
writer.WriteEndObject();
}
public override object? ReadJson(
JsonReader reader, Type objectType, object? existingValue,
JsonSerializer serializer
)
{
if (reader.TokenType != JsonToken.StartArray) throw new Exception("this shouldn't happen");
var obj = JArray.Load(reader);
return obj.Count == 0
? null
: obj.SelectToken("$.[*].@list")?.Children().Select(ASObject.Deserialize).OfType<ASObject>().ToList();
}
}
public sealed class ASOrderedCollectionConverter : JsonConverter