Json путь логический НЕ оператор с фильтром не работает

#jsonpath #json-path-expression

Вопрос:

У меня есть данные JSON, и я хочу использовать логический оператор not в JSONPath, однако я хочу использовать его динамически, так как моя входная строка состоит из множества фильтров, которые я преобразую в запрос JSONPath.

v1/movie?filter=not metadata.sample eq "NETFLIX" таким образом, я использую свой APY. Это должно быть преобразовано в [?(!(@['metadata']['PLM-CODE'] == 'NETFLIX'))] использование объекта фильтра JSONPath.

Теперь это ниже работает идеально

 JsonPath.using(configuration).parse(jsonString).read("$.data[?(!(@['metadata']['PLM-CODE'] == 'NETFLIX'))]",typeRef);
 

но я не могу напрямую добавлять ! при использовании кода ниже:

 String stringFilter = rightPred.toString();
String notFilterString = "[?(!"   stringFilter.substring(2,stringFilter.length()-1)   ")]";
return Filter.parse(notFilterString);
 

но синтаксический анализ преобразует его в [?(@['metadata']['PLM-CODE'] == 'NETFLIX' ! null)]

Комментарии:

1. Вы пробовали использовать a != ?

2. != не служит моей цели. это реляционный оператор

3. на самом деле проблема заключается в Filter.parse(notFilterString); методе, который является методом собственной библиотеки Json-пути. но я не уверен, как мне это исправить или найти альтернативу для этого

4. Это твоих рук дело !(x==y) . Вместо этого используйте x!=y . Я не уверен, что !(<expr>) это поддерживается, но я не знаком конкретно с этой библиотекой. Это, конечно, не поддерживается JSON-путем в целом.

5. Вы работаете в Javascript? Какую библиотеку вы используете? Можете ли вы добавить ссылку?