为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用方言“Mvel”检查drools中的if语句值?

如何使用方言“Mvel”检查drools中的if语句值?

冉冉说 2021-06-21 17:59:24
我下面有一个json"root":[  {    "refDataId": 1,    "children": [      {        "refDataId": 20      },      {        "refDataId": 99,        "otherValue": "Facility"      }    ]  },  {    "refDataId": 2,    "children": [      {        "refDataId": 30      },      {        "refDataId": 99,        "otherValue": "Officer"      }    ]  }]如何使用规则 drools 中的 if 语句检查上面的值?我编辑了问题。这是为了流口水规则例如我的规则是:rule "test"    when        RuleEngine(inputObject!.adultHealth!.children contains 99)    then        info("children contains value 99");end以及如何检查的价值"refDataId": 99,和"otherValue": "Officer"?如果该值必须从第二个子 json 获取 "refDataId": 2,
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

您可以使用我使用过的任何 json 解析器来提取数据org.json


以下代码尝试从您的 json 数据中查找 OFFICER。


JSONObject obj = new JSONObject(jsonString);


    JSONArray objArray = obj.optJSONArray("root");


    for (Object jo : objArray) {

        JSONObject arrayElement = new JSONObject(jo.toString());

        JSONArray childrenArray = arrayElement.getJSONArray("children");


        for (Object child : childrenArray) {


            JSONObject childJo = new JSONObject(child.toString());


            if (Integer.parseInt(childJo.get("refDataId").toString()) == 99) {

                if (childJo.get("otherValue").toString().equals("Officer")) {

                    System.out.println("Success Officer Found !");

                }

            }


        }


    }


查看完整回答
反对 回复 2021-06-30
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

在这里查看使用 drools Fluent API 的嵌套 JSON 迭代,在我看来,创建与 JSON 结构相对应的数据对象就足够了。


查看完整回答
反对 回复 2021-06-30
  • 2 回答
  • 0 关注
  • 226 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信