about summary refs log tree commit diff
path: root/LibMatrix/Extensions/CanonicalJsonSerializer.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-06-20 04:50:00 +0200
committerRory& <root@rory.gay>2025-06-20 04:50:00 +0200
commit6975119b7d21cafdd0620d35b9542fb5d47ef392 (patch)
tree790c0b0ccb7e5d9245ae70f4951260803ead0b94 /LibMatrix/Extensions/CanonicalJsonSerializer.cs
parentStart of federation code (diff)
downloadLibMatrix-6975119b7d21cafdd0620d35b9542fb5d47ef392.tar.xz
Basic federation, move some response classes to the right namespace
Diffstat (limited to 'LibMatrix/Extensions/CanonicalJsonSerializer.cs')
-rw-r--r--LibMatrix/Extensions/CanonicalJsonSerializer.cs9
1 files changed, 9 insertions, 0 deletions
diff --git a/LibMatrix/Extensions/CanonicalJsonSerializer.cs b/LibMatrix/Extensions/CanonicalJsonSerializer.cs

index 55a4b1a..ae535aa 100644 --- a/LibMatrix/Extensions/CanonicalJsonSerializer.cs +++ b/LibMatrix/Extensions/CanonicalJsonSerializer.cs
@@ -1,6 +1,7 @@ using System.Collections.Frozen; using System.Reflection; using System.Text.Json; +using System.Text.Json.Nodes; using System.Text.Json.Serialization.Metadata; using ArcaneLibs.Extensions; @@ -57,6 +58,14 @@ public static class CanonicalJsonSerializer { // public static String Serialize<TValue>(TValue value, JsonTypeInfo<TValue> jsonTypeInfo) => JsonSerializer.Serialize(value, jsonTypeInfo, _options); // public static String Serialize(Object value, JsonTypeInfo jsonTypeInfo) + public static byte[] SerializeToUtf8Bytes<T>(T value, JsonSerializerOptions? options = null) { + var newOptions = MergeOptions(null); + return JsonSerializer.SerializeToNode(value, options) // We want to allow passing custom converters for eg. double/float -> string here... + .SortProperties()! + .CanonicalizeNumbers()! + .ToJsonString(newOptions).AsBytes().ToArray(); + } + #endregion // ReSharper disable once UnusedType.Local