#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? Какую библиотеку вы используете? Можете ли вы добавить ссылку?