diff --git a/src/modules/Elsa.Workflows.Core/Serialization/Converters/IntegerArrayConverter.cs b/src/modules/Elsa.Workflows.Core/Serialization/Converters/IntegerConverter.cs
similarity index 100%
rename from src/modules/Elsa.Workflows.Core/Serialization/Converters/IntegerArrayConverter.cs
rename to src/modules/Elsa.Workflows.Core/Serialization/Converters/IntegerConverter.cs
diff --git a/src/modules/Elsa.Workflows.Core/Serialization/Converters/JsonPrimitiveToStringConverter.cs b/src/modules/Elsa.Workflows.Core/Serialization/Converters/JsonPrimitiveToStringConverter.cs
new file mode 100644
index 000000000..694209159
--- /dev/null
+++ b/src/modules/Elsa.Workflows.Core/Serialization/Converters/JsonPrimitiveToStringConverter.cs
@@ -0,0 +1,43 @@
+using System.Globalization;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Elsa.Workflows.Core.Serialization.Converters;
+
+///
+/// Converts primitives to and from JSON strings.
+///
+public class JsonPrimitiveToStringConverter : JsonConverter
+{
+ ///
+ public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ switch (reader.TokenType)
+ {
+ case JsonTokenType.True:
+ return "True";
+ case JsonTokenType.False:
+ return "False";
+ case JsonTokenType.Number when reader.TryGetInt64(out var l):
+ return l.ToString();
+ case JsonTokenType.Number:
+ return reader.GetDouble().ToString(CultureInfo.InvariantCulture);
+ case JsonTokenType.String when reader.TryGetDateTimeOffset(out var datetime):
+ return datetime.ToString();
+ case JsonTokenType.String:
+ return reader.GetString()!;
+ default:
+ {
+ // Use JsonElement as fallback.
+ using var document = JsonDocument.ParseValue(ref reader);
+ return document.RootElement.Clone().ToString();
+ }
+ }
+ }
+
+ ///
+ public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
+ {
+ writer.WriteStringValue(value);
+ }
+}
\ No newline at end of file
diff --git a/src/modules/Elsa.Workflows.Core/Serialization/Converters/VariableConverter.cs b/src/modules/Elsa.Workflows.Core/Serialization/Converters/VariableConverter.cs
index d6f7c55d8..59bb353ee 100644
--- a/src/modules/Elsa.Workflows.Core/Serialization/Converters/VariableConverter.cs
+++ b/src/modules/Elsa.Workflows.Core/Serialization/Converters/VariableConverter.cs
@@ -27,7 +27,9 @@ public class VariableConverter : JsonConverter
///
public override Variable? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
- var model = JsonSerializer.Deserialize(ref reader, options)!;
+ var newOptions = new JsonSerializerOptions(options);
+ newOptions.Converters.Add(new JsonPrimitiveToStringConverter());
+ var model = JsonSerializer.Deserialize(ref reader, newOptions)!;
var variable = Map(model);
return variable;