diff --git a/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs b/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs
index d2a0349b5..29341fda5 100644
--- a/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs
+++ b/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs
@@ -1,3 +1,4 @@
+using System.Text.Json;
using Elsa.Features.Abstractions;
using Elsa.Features.Services;
using Elsa.MongoDb.Options;
@@ -51,6 +52,7 @@ public class MongoDbFeature : FeatureBase
BsonSerializer.RegisterSerializer(typeof(Type), new TypeSerializer());
BsonSerializer.RegisterSerializer(typeof(Variable), new VariableSerializer());
BsonSerializer.RegisterSerializer(typeof(Version), new VersionSerializer());
+ BsonSerializer.RegisterSerializer(typeof(JsonElement), new JsonElementSerializer());
}
private static void RegisterClassMaps()
diff --git a/src/modules/Elsa.MongoDb/Serializers/JsonElementSerializer.cs b/src/modules/Elsa.MongoDb/Serializers/JsonElementSerializer.cs
new file mode 100644
index 000000000..b67efdba0
--- /dev/null
+++ b/src/modules/Elsa.MongoDb/Serializers/JsonElementSerializer.cs
@@ -0,0 +1,36 @@
+using System.Text.Json;
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization;
+
+namespace Elsa.MongoDb.Serializers;
+
+///
+/// Serializes a .
+///
+public class JsonElementSerializer : IBsonSerializer
+{
+ ///
+ public Type ValueType => typeof(JsonElement);
+
+ void IBsonSerializer.Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value) => Serialize(context, args, (JsonElement)value);
+ object IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) => Deserialize(context, args);
+
+ ///
+ public JsonElement Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
+ {
+ if (context.Reader.CurrentBsonType == BsonType.Null)
+ {
+ context.Reader.ReadNull();
+ return new JsonElement();
+ }
+
+ var json = context.Reader.ReadString();
+ return JsonSerializer.Deserialize(json);
+ }
+
+ ///
+ public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, JsonElement value)
+ {
+ context.Writer.WriteString(value.GetRawText());
+ }
+}
\ No newline at end of file