We need to send the jsonpath to client machine based on the filters selected by the user.
in the below json, we've data with coutry code as IN and ENG, I need to create Jsonpath which fetches records with Country code in "IN" or "ENG" and building having rooms 1 or 2.
{"countries":[{"country":{"countryCode":"IN","building":[{"name":"Babbage","floor":[{"level":1,"apartment":[{"rooms":2},{"rooms":3}],"lift":"working"},{"level":2,"apartment":[{"rooms":2},{"rooms":3}],"lift":"working"},{"level":2,"apartment":[{"rooms":1},{"rooms":4}],"lift":"notworking"}]},{"name":"Charles","floor":[{"level":1,"lift":"notinstalled","apartment":[{"rooms":1},{"rooms":2}]},{"level":2,"lift":"working","apartment":[{"rooms":1},{"rooms":4}]}]}]}},{"country":{"countryCode":"ENG","building":[{"name":"Babbage","floor":[{"level":1,"apartment":[{"rooms":2},{"rooms":3}],"lift":"working"},{"level":2,"apartment":[{"rooms":2},{"rooms":3}],"lift":"working"},{"level":2,"apartment":[{"rooms":1},{"rooms":4}],"lift":"notworking"}]},{"name":"Charles","floor":[{"level":1,"lift":"notinstalled","apartment":[{"rooms":1},{"rooms":2}]},{"level":2,"lift":"working","apartment":[{"rooms":1},{"rooms":4}]}]}]}}]}
I tried it with hard coded Jsonpath filter it's working fine. But I want to generate that string using java.
instead of hardcoding it as String filter = "$.building[*].floor[?(@.lift=="working")].apartment[?(@.rooms==1)]";
I want to build this filter.
Please help.
You can do something like:
You could also look into libraries like Jayway JsonPath or Gson to work with JSON data and dynamically generate JSONPath expressions or filters.