尝试将 a 类型传递给 CDK 事件规则 RuleTargetInput 但输出 json 有斜杠

Trying to pass an a type to CDK Event Rule RuleTargetInput but the output json has slashes

我有一个要填充的 class,然后作为负载传递给事件规则。像这样。

public class Payload
{
    public string Site {get;set;}
    public string Region {get;set}
    ....
}

现在在我的 CDK 中,我用其他值填充它们

var payload = new PayLoad()
payload.Site = "NY";
payload.Region = "1"
....

var _json = JsonSerializer.Serialize(payload )

现在,我想将此 RuleTargetInput 传递给事件规则

eventRule.AddTarget(new LambdaFunction(fn, new LambdaFunctionProps
{
Event = RuleTargetInput.FromObject(_json )
}));

事件显示是这样的

"{"\Site\":\"NYC\",\"Region\"}"....

lambda 函数不喜欢此负载。如果我手动删除反斜杠然后它工作。 System.Text.Json 有没有办法删除 Serialize 上的反斜杠?

看起来 json 字符串作为对象或来自 json 序列化程序的 FromText 传递 'FromObject',输出将具有转义字符“

根据这个 github 问题 Git Hub issue

所以解决方案是转换为字典,然后将其传递给 RuleTargetInput

var rootDictionary = new Dictionary<string, object>();
rootDictionary.Add("Site",item.Site);
rootDictionary.Add("Region",item.Region);
... other list to this

然后

Event = RuleTargetInput.FromObject(rootDictionary)