Skip to content

Filter does not apply to object fields when wildcard used #64

Description

Steps to reproduce

Example JSON:

{
    "a": {
        "size": 15
    },
    "b": {
        "size": 20
    },
    "c": {
        "size": 10
    }
}

Queries:

$[?(@.size > 13)]
$.*[?(@.size > 13)]

Code:

String json = "...";  // see JSON file above
Collector collector = JsonSurferJackson.INSTANCE.collector(json);
ValueBox<Collection<Object>> first = collector.collectAll("$[?(@.size > 10)]");
ValueBox<Collection<Object>> second = collector.collectAll("$.*[?(@.size > 10)]");
collector.exec();

System.out.println(first.get());
System.out.println(second.get());

Expected

The queries $.*[?(@.size > 13)] and $[?(@.size > 13)] return an array of two items:

[ { "size": 15 }, { "size": 20 } ]

Actual

Both queries return an empty array:

[]

Note

The queries $.* and $[*] return an array of all three items:

[
    "a": {
        "size": 15
    },
    "b": {
        "size": 20
    },
    "c": {
        "size": 10
    }
]

So I would expect that a filter after a wildcard is working fine.

Environment

JsonSurfer 1.6.0 + Jackson Parser + Jackson Provider.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions