gpt4 book ai didi

java - 在 Java 运行时评估基于 Json 的规则

转载 作者:行者123 更新时间:2023-12-02 08:48:17 24 4
gpt4 key购买 nike

我需要在运行时将数据库中以 json 格式存在的规则转换为 Java 代码。

例如,

{
"id": "g-KqVJwrEMUYNOEVEnNxxqc",
"rules": [
{
"id": "r-2VC4YQOkYu-lxkGgMABRc",
"field": "firstName",
"value": "Steve",
"operator": "="
},
{
"id": "r-B2Dd6eHO1rsZ-t1mfPk33",
"field": "lastName",
"value": "Vai",
"operator": "="
}
],
"combinator": "and",
"not": false
}

json 中的键将事先已知。此外,字段和运算符值将是固定且已知的。

但是我很困惑如何将上面的内容转换为代码,

inputObject.firstName.equals("Steve") && inputObject.lastName.equals("Vai")

任何线索、想法都将受到高度赞赏!

最佳答案

您可以使用内省(introspection)在运行时评估字段

它看起来像这样

Command command = parseJson(input); // transform input into a java object
InputObject o = getItFromSomewhere();
bool finalResult;


// process each rule
for ( Rule r: command.rules ) {

var fieldValue = o.getClass().getField(r.field).get(o);

var currentResult;
switch(r.operator) {
case "=": currentResult = fieldValue.equals(r.value);
break;
case ">": currentResult = ....
..etc
}

// combine it with previous results;
switch(command.combinator) {
case "and":
finalResult = finalResult && currentResult;
break;
case "or":
finalResult = finalResult || currentResult;
}

}
System.out.println(finalResult);

显然这不是确切的代码,而只是为了展示如何在运行时动态检索字段值并对其进行评估。

关于java - 在 Java 运行时评估基于 Json 的规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60943183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com