diff --git a/json-path/src/main/java/com/jayway/jsonpath/Criteria.java b/json-path/src/main/java/com/jayway/jsonpath/Criteria.java index ee99028f..e86b7499 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/Criteria.java +++ b/json-path/src/main/java/com/jayway/jsonpath/Criteria.java @@ -572,11 +572,13 @@ public class Criteria implements Predicate { } private static int safeCompare(Object expected, Object actual, Configuration configuration) { - if (isNullish(expected) && !isNullish(actual)) { + boolean expectedIsNullish = isNullish(expected); + boolean actualIsNullish = isNullish(actual); + if (expectedIsNullish && !actualIsNullish) { return -1; - } else if (!isNullish(expected) && isNullish(actual)) { + } else if (!expectedIsNullish && actualIsNullish) { return 1; - } else if (isNullish(expected) && isNullish(actual)) { + } else if (expectedIsNullish && actualIsNullish) { return 0; } else if (expected instanceof String && actual instanceof String) { return ((String) expected).compareTo((String) actual); @@ -608,7 +610,7 @@ public class Criteria implements Predicate { public static Criteria create(String path, String operator, String expected) { - if (expected.startsWith("'") && expected.endsWith("'")) { + if (! expected.isEmpty() && expected.charAt(0) == '\'' && expected.charAt(expected.length()-1) == '\'') { expected = expected.substring(1, expected.length() - 1); } diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/PathCompiler.java b/json-path/src/main/java/com/jayway/jsonpath/internal/PathCompiler.java index 8f35a65c..52f55b71 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/PathCompiler.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/PathCompiler.java @@ -44,7 +44,7 @@ public class PathCompiler { LinkedList filterList = new LinkedList(asList(filters)); - if (!path.startsWith("$")) { + if (path.charAt(0) != '$') { path = "$." + path; }