@AnsumanP: not sure if I can format the answer here properly, but I will try; if it is unclear, feel free to send me an email instead 1) in the Java code I e.g. overload the read method; if I am just pass a json String here but no path for a query, I will return a ReadObject reference for later reuse 2) in the Java code I add e.g. a readString and readStringArray method 3) in the BDL code, if I expect a single result, I use readString 4) in the BDL code, if I expect a list as result, I use readStringArray import java.util.ArrayList; import java.util.List; import com.jayway.jsonpath.*; public class JsonPathWrp { public static String read(String json, String path) { return JsonPath.read(json, path); } public static ReadContext read(String json) { return JsonPath.parse(json); } public static String readString(ReadContext context, String path) { return context.read(path); } public static List readStringArray(ReadContext context, String path) { Object retVal = context.read(path); if (retVal instanceof String) { List list = new ArrayList (); list.add((String)retVal); return list; } else { return (List )retVal; } } } ///// ///// // BDL ///// ///// transaction TJsonPathEx var sResult : string; hJsonObj, hListObj : number; size,i :number; begin // create Json object JavaSetString(JAVA_STATIC_METHOD, SOME_JSON); JavaCallMethod(JAVA_STATIC_METHOD, "JsonPathWrp.read"); hJsonObj := JavaGetObject(JAVA_STATIC_METHOD); // Sample 1: read author of 2nd book JavaSetObject(JAVA_STATIC_METHOD, hJsonObj); JavaSetString(JAVA_STATIC_METHOD, "$.store.book[1].author"); JavaCallMethod(JAVA_STATIC_METHOD, "JsonPathWrp.readString"); JavaGetString(JAVA_STATIC_METHOD, sResult); Print("2nd author is: "+sResult); // Sample 2: get all authors where price of book is >5 JavaSetObject(JAVA_STATIC_METHOD, hJsonObj); JavaSetString(JAVA_STATIC_METHOD, "$.store.book[?(@.price > 5)].author"); JavaCallMethod(JAVA_STATIC_METHOD, "JsonPathWrp.readStringArray"); hListObj := JavaGetObject(JAVA_STATIC_METHOD); // List JavaCallMethod(hListObj, "size"); size := JavaGetNumber(hListObj); for i := 0 to size-1 do JavaSetNumber(hListObj, i); JavaCallMethod(hListObj, "get"); JavaGetString(hListObj, sResult); Print("author with prize > 5 : "+sResult); end; end TJsonPathEx;
↧