public Object eval(Object rootObject) { if (rootObject == null) { return null; } init(); Object currentObject = rootObject; for (int i = 0; i < segments.length; ++i) { Segment segment = segments[i]; currentObject = segment.eval(this, rootObject, currentObject); } return currentObject; }
public boolean contains(Object rootObject) { if (rootObject == null) { return false; } init(); Object currentObject = rootObject; for (int i = 0; i < segments.length; ++i) { Object parentObject = currentObject; currentObject = segments[i].eval(this, rootObject, currentObject); if (currentObject == null) { return false; } if (currentObject == Collections.EMPTY_LIST && parentObject instanceof List) { return ((List) parentObject).contains(currentObject); } } return true; }
public int size(Object rootObject) { if (rootObject == null) { return -1; } init(); Object currentObject = rootObject; for (int i = 0; i < segments.length; ++i) { currentObject = segments[i].eval(this, rootObject, currentObject); } return evalSize(currentObject); }
public Object eval(Object rootObject) { if (rootObject == null) { return null; } init(); Object currentObject = rootObject; for (int i = 0; i < segments.length; ++i) { Segment segment = segments[i]; currentObject = segment.eval(this, rootObject, currentObject); } return currentObject; }
/** * Extract keySet or field names from rootObject on this JSONPath. * * @param rootObject Can be a map or custom object. Array and Collection are not supported. * @return Set of keys, or <code>null</code> if not supported. */ public Set<?> keySet(Object rootObject) { if (rootObject == null) { return null; } init(); Object currentObject = rootObject; for (int i = 0; i < segments.length; ++i) { currentObject = segments[i].eval(this, rootObject, currentObject); } return evalKeySet(currentObject); }
public boolean contains(Object rootObject) { if (rootObject == null) { return false; } init(); Object currentObject = rootObject; for (int i = 0; i < segments.length; ++i) { Object parentObject = currentObject; currentObject = segments[i].eval(this, rootObject, currentObject); if (currentObject == null) { return false; } if (currentObject == Collections.EMPTY_LIST && parentObject instanceof List) { return ((List) parentObject).contains(currentObject); } } return true; }
public int size(Object rootObject) { if (rootObject == null) { return -1; } init(); Object currentObject = rootObject; for (int i = 0; i < segments.length; ++i) { currentObject = segments[i].eval(this, rootObject, currentObject); } return evalSize(currentObject); }
/** * Extract keySet or field names from rootObject on this JSONPath. * * @param rootObject Can be a map or custom object. Array and Collection are not supported. * @return Set of keys, or <code>null</code> if not supported. */ public Set<?> keySet(Object rootObject) { if (rootObject == null) { return null; } init(); Object currentObject = rootObject; for (int i = 0; i < segments.length; ++i) { currentObject = segments[i].eval(this, rootObject, currentObject); } return evalKeySet(currentObject); }