diff --git a/src/core/Elsa.Core/Elsa.Core.csproj b/src/core/Elsa.Core/Elsa.Core.csproj
index 24b689841..78ff5e6fe 100644
--- a/src/core/Elsa.Core/Elsa.Core.csproj
+++ b/src/core/Elsa.Core/Elsa.Core.csproj
@@ -43,8 +43,7 @@
-
-
+
diff --git a/src/core/Elsa.Core/Serialization/Formatters/YamlTokenFormatter.cs b/src/core/Elsa.Core/Serialization/Formatters/YamlTokenFormatter.cs
index 5b26f868f..8ddcfdf0e 100644
--- a/src/core/Elsa.Core/Serialization/Formatters/YamlTokenFormatter.cs
+++ b/src/core/Elsa.Core/Serialization/Formatters/YamlTokenFormatter.cs
@@ -1,7 +1,9 @@
-using System.Dynamic;
+using System.Dynamic;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
+using NodaTime;
+using NodaTime.Serialization.JsonNet;
using YamlDotNet.Serialization;
namespace Elsa.Serialization.Formatters
@@ -9,15 +11,22 @@ namespace Elsa.Serialization.Formatters
public class YamlTokenFormatter : ITokenFormatter
{
public const string FormatName = "YAML";
- private readonly ExpandoObjectConverter expandoObjectConverter;
- private readonly Serializer serializer;
- private readonly Deserializer deserializer;
+ private readonly ISerializer serializer;
+ private readonly IDeserializer deserializer;
+ private readonly JsonSerializerSettings jsonSerializerSettings;
public YamlTokenFormatter()
{
- expandoObjectConverter = new ExpandoObjectConverter();
serializer = new SerializerBuilder().Build();
deserializer = new DeserializerBuilder().Build();
+
+ jsonSerializerSettings = new JsonSerializerSettings {
+ NullValueHandling = NullValueHandling.Ignore,
+ };
+
+ jsonSerializerSettings
+ .ConfigureForNodaTime(DateTimeZoneProviders.Tzdb)
+ .Converters.Add(new ExpandoObjectConverter());
}
public string Format => FormatName;
@@ -26,15 +35,16 @@ namespace Elsa.Serialization.Formatters
public string ToString(JToken token)
{
var json = token.ToString(Formatting.None);
- var expandoObject = JsonConvert.DeserializeObject(json, expandoObjectConverter);
+ var expandoObject = JsonConvert.DeserializeObject(json, jsonSerializerSettings);
return serializer.Serialize(expandoObject);
}
public JToken FromString(string data)
{
var expandoObject = deserializer.Deserialize(data);
- var json = JsonConvert.SerializeObject(expandoObject);
- return JToken.Parse(json);
+ var json = JsonConvert.SerializeObject(expandoObject, jsonSerializerSettings);
+
+ return JsonConvert.DeserializeObject(json, jsonSerializerSettings);
}
}
}
\ No newline at end of file