Add toJson JS function

The Jint implementation of JSON.stringify only supports a limited set of objects (not .NET LocalDate for example)
This commit is contained in:
Sipke Schoorstra 2023-01-20 19:26:38 +01:00
parent e918bc9301
commit e3deafedf3
2 changed files with 8 additions and 1 deletions

View file

@ -1,4 +1,5 @@
using Elsa.Expressions.Models;
using System.Text.Json;
using Elsa.Expressions.Models;
using Elsa.Extensions;
using Elsa.JavaScript.Notifications;
using Elsa.JavaScript.Options;
@ -61,6 +62,7 @@ public class JintJavaScriptEvaluator : IJavaScriptEvaluator
engine.SetValue("isNullOrWhiteSpace", (Func<string, bool>)string.IsNullOrWhiteSpace);
engine.SetValue("isNullOrEmpty", (Func<string, bool>)string.IsNullOrEmpty);
engine.SetValue("toJson", (Func<object, string>)(value => JsonSerializer.Serialize(value)));
// Add common .NET types.
engine.RegisterType<DateTime>();

View file

@ -41,6 +41,11 @@ internal class CommonFunctionDefinitionProvider : FunctionDefinitionProvider
.Parameter("value", "string")
.ReturnType("boolean"));
yield return CreateFunctionDefinition(builder => builder
.Name("toJson")
.Parameter("value", "any")
.ReturnType("string"));
// Variable getter and setters.
foreach (var variable in context.Variables)
{