【问题标题】:RuleEngine or Templating language to transform JSON dynamically动态转换 JSON 的规则引擎或模板语言
【发布时间】:2020-07-20 01:47:54
【问题描述】:

我有一个需要动态转换为另一个 json 的 json。我想将输入json的属性映射到目标json的属性,同时映射我也想应用规则。下面是示例伪代码

if (input.State == "TX")
   output.TaxRate = 12.00
 else
   output.TaxRate = input.Rate..

这些规则和目标 json 结构经常变化。所以我一直在寻找可以动态应用规则或映射到不同目标 json 的模板语言或规则引擎。

我查看了使用基于 JSON 的模板的 Microsoft Rules Engine。但与大多数其他开源规则引擎一样,当条件为真时,它不会执行操作/方法。它只计算 linq 表达式并返回布尔值。有没有人尝试扩展这个规则引擎来动态执行动作/方法?

我愿意接受任何其他建议和指南。我更喜欢模板语言,所以我可以提供 UI 来动态编辑模板。

【问题讨论】:

  • 执行动作是什么意思?为什么要在解析/转换数据结构时执行操作?通常,您应该转换您的对象并然后执行任何所需的操作。
  • @dx_over_dt 如果我使用 RulesEngine 那么它不会进行转换。它只会评估条件。当条件为真时,您需要执行实际将属性转换或映射到目标对象的方法
  • 可能太久没用C#了。这在 Node/JS 中非常简单,而在 TypeScript 中则很简单。你不能只使用一系列链接的 Linq 查询吗?

标签: c# rule-engine templating-engine


【解决方案1】:

从 v3 开始,RulesEngine 提供对操作的支持 - https://github.com/microsoft/RulesEngine/wiki/Actions

它支持OutputExpression,可以使用表达式进行转换。 如果您需要更复杂的转换,您甚至可以创建自己的操作并将其插入 RulesEngine

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多