是否有人成功使用Java implementation的JsonLogic?
此规则
{"==" : [ { "var" : "code" }, "ER"]}
使用此数据给出正确答案(true)
{"code": "ER", "name": "Exploratory Research"}
但是,这个Java代码
JavaJsonLogic jsonLogic = JavaJsonLogic.INSTANCE;
String rule = "{\"==\" : [ { \"var\" : \"code\" }, \"ER\"]}";
JsonObject data = new JsonObject();
data.addProperty("code", "ER");
data.addProperty("name", "Exploratory Research")
System.out.println(jsonLogic.apply(rule, data)););
返回false
!
答案 0 :(得分:1)
JsonLogic jsonLogic = new JsonLogic();
String rule = "{\"==\" : [ { \"var\" : \"code\" }, \"ER\"]}";
//JsonObject data = new JsonObject();
Map<String, Object> data = new HashMap<>();
data.put("name", "Exploratory Research");
data.put("code", "ER");
jsonLogic.apply(rule, data);
我使用哈希图来代替 JsonObject
填充值。结果是真的。而且我还使用 https://mvnrepository.com/artifact/io.github.jamsesso
来解析 jsonLogic 字符串并通过 jsonlogic 验证数据。
答案 1 :(得分:-1)
dmillerw也根据你所关注的jsonlogic规范为java做了jsonlogic实现。我只是尝试从下面的URL中获取代码库,并使用您的测试数据,它就像一个魅力。
https://github.com/dmillerw/json-logic-java
以下是我在junit中测试您需求的内容:
String testjson = **"[[{\"==\" : [ { \"var\" : \"code\" }, \"ER\"]},{\"code\": \"ER\", \"name\": \"Exploratory Research\"},true]]";**
JsonArray testArray = gson.fromJson(testjson, JsonArray.class);
for (JsonElement element : testArray) {
JsonArray array = element.getAsJsonArray();
JsonElement test = array.get(0);
JsonElement data = array.get(1);
JsonElement expected = array.get(2);
System.out.println(**JsonLogic.apply(test, data)**);
}