我在下面有一个json
"root":[
{
"refDataId": 1,
"children": [
{
"refDataId": 20
},
{
"refDataId": 99,
"otherValue": "Facility"
}
]
},
{
"refDataId": 2,
"children": [
{
"refDataId": 30
},
{
"refDataId": 99,
"otherValue": "Officer"
}
]
}
]
如何在规则流口水中使用if语句检查上面的值?
我编辑了问题。这是流口水的规则
例如我的规则是:
rule "test"
when
RuleEngine(inputObject!.adultHealth!.children contains 99)
then
info("children contains value 99");
end
以及如何检查"refDataId": 99,
和"otherValue": "Officer"
的值?
如果值必须来自第二个子json "refDataId": 2,
答案 0 :(得分:1)
您可以使用任何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 !");
}
}
}
}
答案 1 :(得分:0)
在这里Nested JSON iterations using drools Fluent API看来,创建与JSON结构相对应的数据对象就足够了。