是否有人成功地使用了JsonLogic的Java implementation
这条规则
{"==" : [ { "var" : "code" }, "ER"]}使用此数据给出正确答案(true)
{"code": "ER", "name": "Exploratory Research"}使用javascript playground。
但是,这段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!
发布于 2021-04-06 21:39:08
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验证数据。
发布于 2018-04-11 00:00:53
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)**);}
https://stackoverflow.com/questions/48175200
复制相似问题