将逻辑表示为JSON中的数据

出于业务原因,我们需要将一些条件逻辑外部化到外部文件中:最好是JSON

一个简单的筛选方案可以通过添加一个节点来进行处理,如下所示:

"filter": [

{

"criteria": "status",

"value": "open",

"condition": "=="

}

]

数组中的其他值可以处理多个条件。

"filter": [

{

"criteria": "status",

"value": "open",

"condition": "=="

},

{

"criteria": "condition2",

"value": "value2",

"condition": "=="

}

]

但是,当我们处理涉及AND或OR的复杂条件时,这会引起一些混乱。

问题:是否存在用于表示JSON中这种逻辑的标准化(甚至被广泛接受的)格式?如果由您决定,您将如何做?

注意:第一个答案已制成可编辑的Wiki,因此任何认为可能的人都可以对其进行改进。

回答:

如果 必须 使用标准JSON实现此功能,我建议您使用类似于Lisp的“

S表达式”的内容。条件可以是普通对象,也可以是数组的第一个条目是连接它们的逻辑运算。

例如:

["AND",

{"var1" : "value1"},

["OR",

{ "var2" : "value2" },

{ "var3" : "value3" }

]

]

将代表var1 == value1 AND (var2 == value2 OR var3 == value3)

如果您希望简洁而不是一致性,则还可以允许一个对象具有多个属性,这些属性将通过AND隐式地连接在一起。例如,{ "a": "b", "c": "d"

}将等同于["AND", { "a": "b" }, { "c": "d"

}]。但是在某些情况下(如示例),前一种语法不能如实地表示所写的条件;您将需要其他技巧,例如转换条件或使用虚拟属性名称。后一种语法应始终有效。

以上是 将逻辑表示为JSON中的数据 的全部内容, 来源链接: utcz.com/qa/409082.html

回到顶部