From c0062ebb7cc9d5ce04136046e5e93ebb8b228b79 Mon Sep 17 00:00:00 2001 From: kavyaNamballa <163406073+kavyaNamballa@users.noreply.github.com> Date: Tue, 24 Jun 2025 23:18:28 +0530 Subject: [PATCH] fix/1043 empty array handling in filter expressions to return false for empty results --- .../com/jayway/jsonpath/internal/filter/ValueNodes.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNodes.java b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNodes.java index 3f459a8c1..e0ae8fbf4 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNodes.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNodes.java @@ -678,7 +678,14 @@ public ValueNode evaluate(Predicate.PredicateContext ctx) { try { Configuration c = Configuration.builder().jsonProvider(ctx.configuration().jsonProvider()).options(Option.REQUIRE_PROPERTIES).build(); Object result = path.evaluate(ctx.item(), ctx.root(), c).getValue(false); - return result == JsonProvider.UNDEFINED ? FALSE : TRUE; + if (result == JsonProvider.UNDEFINED) { + return FALSE; + } + // If the result is an empty array, return FALSE for exists checks + if (ctx.configuration().jsonProvider().isArray(result) && ctx.configuration().jsonProvider().length(result) == 0) { + return FALSE; + } + return TRUE; } catch (PathNotFoundException e) { return FALSE; }