json-logic-java icon indicating copy to clipboard operation
json-logic-java copied to clipboard

How to compute with nested input data

Open kimnamcham opened this issue 3 years ago • 1 comments

Hi, i have json logic with var nested object, how to compute input data with nested object

JsonLogic: String expression = "{\"and\":[{\">=\":[{\"var\":\"loan.requestInfo.requestLoanAmount\"},10000000]},{\">=\":[{\"var\":\"user.level\"},1]},{\"==\":[{\"var\":\"loan.queueName\"},\"PTF_Credit_Approval\"]}]}";

Input Data: Map<String, Object> data = new HashMap<>(); data.put("loan.requestInfo.requestLoanAmount", 10000000); data.put("loan.queueName", "PTF_Credit_Approval"); data.put("user.level", 1);

I have test on this web: https://jsonlogic.com/play.html, input data with result true . But when check with this library, it's always return false. How to resolve this issuse, thanks?

kimnamcham avatar Oct 17 '22 04:10 kimnamcham

Input data string for test on web: {"loan":{"requestInfo":{"requestLoanAmount":10000000},"queueName":"PTF_Credit_Approval"},"user":{"level":1}}

kimnamcham avatar Oct 17 '22 04:10 kimnamcham

Your data is incorrect, you need to do something like this:

Map<String, Object> data = new HashMap<>();
Map<String, Object> loan = new HashMap<>();
Map<String, Object> requestInfo = new HashMap<>();
Map<String, Object> user = new HashMap<>();

data.put("loan", loan);
data.put("user", user);

loan.put("requestInfo", requestInfo);
loan.put("queueName", "PTF_Credit_Approval");

requestInfo.put("requestLoanAmount", 10000000);

Then you can pass data to json-logic-java.

jamsesso avatar Nov 16 '22 00:11 jamsesso