将逻辑表示为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