using System.Text.Json; using Elsa.ProtoActor.ProtoBuf; using Elsa.Workflows.Serialization.Converters; using Google.Protobuf.Collections; namespace Elsa.ProtoActor.Extensions; internal static class ProtoJsonMapExtensions { public static IDictionary Deserialize(this MapField input) { var jsonSerializerOptions = new JsonSerializerOptions(); jsonSerializerOptions.Converters.Add(new ExpandoObjectConverterFactory()); return input.ToDictionary(x => x.Key, x => JsonSerializer.Deserialize(x.Value.Text, jsonSerializerOptions)!); } public static void Serialize(this IDictionary input, MapField target) { foreach (var (key, value) in input) { target[key] = new Json { Text = JsonSerializer.Serialize(value) }; } } }