mirror of
https://github.com/OpenSPG/openspg.git
synced 2025-11-03 11:35:18 +00:00
feat(reasoner): json_get support JSONArray (#233)
This commit is contained in:
parent
649513572f
commit
148c17f668
@ -14,6 +14,7 @@
|
||||
package com.antgroup.openspg.reasoner.udf.builtin.udf;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.JSONPath;
|
||||
import com.antgroup.openspg.reasoner.udf.model.UdfDefine;
|
||||
@ -38,8 +39,19 @@ public class JsonStringGet {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return "";
|
||||
} catch (Exception e1) {
|
||||
try {
|
||||
JSONArray jsonArray = JSON.parseArray(plainJson);
|
||||
for (Object item : jsonArray) {
|
||||
JSONObject jsonObject = (JSONObject) item;
|
||||
Object result = JSONPath.eval(jsonObject, jsonPath);
|
||||
if (result != null) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
} catch (Exception e2) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
@ -74,6 +74,46 @@ public class UdfTest {
|
||||
Assert.assertEquals(rst, "123");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testJsonGet1() {
|
||||
UdfMng mng = UdfMngFactory.getUdfMng();
|
||||
String params = "[{'v':'123'}]";
|
||||
IUdfMeta udfMeta =
|
||||
mng.getUdfMeta("json_get", Lists.newArrayList(KTString$.MODULE$, KTString$.MODULE$));
|
||||
Object rst = udfMeta.invoke(params, "$.v");
|
||||
Assert.assertEquals(rst, "123");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testJsonGet2() {
|
||||
UdfMng mng = UdfMngFactory.getUdfMng();
|
||||
String params = "[{'v':'123'}, {'k':'456'}]";
|
||||
IUdfMeta udfMeta =
|
||||
mng.getUdfMeta("json_get", Lists.newArrayList(KTString$.MODULE$, KTString$.MODULE$));
|
||||
Object rst = udfMeta.invoke(params, "$.k");
|
||||
Assert.assertEquals(rst, "456");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testJsonGet3() {
|
||||
UdfMng mng = UdfMngFactory.getUdfMng();
|
||||
String params = "[{'v': {'v1': '111', 'v2': '222'}}, {'k': {'k1': '333', 'k2': '444'}}]";
|
||||
IUdfMeta udfMeta =
|
||||
mng.getUdfMeta("json_get", Lists.newArrayList(KTString$.MODULE$, KTString$.MODULE$));
|
||||
Object rst = udfMeta.invoke(params, "$.k.k2");
|
||||
Assert.assertEquals(rst, "444");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testJsonGet4() {
|
||||
UdfMng mng = UdfMngFactory.getUdfMng();
|
||||
String params = "[{'案由': '打架斗殴', '日期': '20240101'}, {'案由': '制造毒品', '日期': '20240202'}]";
|
||||
IUdfMeta udfMeta =
|
||||
mng.getUdfMeta("json_get", Lists.newArrayList(KTString$.MODULE$, KTString$.MODULE$));
|
||||
Object rst = udfMeta.invoke(params, "$[案由 rlike '(.*)毒品(.*)'].案由");
|
||||
Assert.assertEquals(rst, "制造毒品");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRdfProperty() {
|
||||
UdfMng mng = UdfMngFactory.getUdfMng();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user