JsonPath PathNotFoundException - PullRequest
       90

JsonPath PathNotFoundException

0 голосов
/ 14 июля 2020

Я использую java библиотеку JsonPath для анализа некоторых json сообщений.

В этом случае я хотел бы иметь нулевое значение, когда путь к json сообщение не закрывается.

Когда я читаю строку json, я создаю объект document , например:

Object document = Configuration.defaultConfiguration().addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL).addOptions(Option.SUPPRESS_EXCEPTIONS).jsonProvider().parse(payloadString);

С помощью options Я добавил при создании объекта, что я делаю вид (на основе do c)

  • DEFAULT_PATH_LEAF_TO_NULL: возвращать null для отсутствующих листьев
  • SUPPRESS_EXCEPTIONS: гарантирует, что никакие исключения не передаются из оценки пути. Если опция ALWAYS_RETURN_LIST НЕ присутствует, возвращается null

Для этого сценария важной опцией является SUPPRESS_EXCEPTIONS (если я хорошо понял), потому что я хочу получить нулевое значение, если путь не завершается (если это не лист).

Это путь сообщения json: $ ['payload'] ['array1'] [0] ['array2 '] [0] [' elemOfArray2 ']

Иногда json сообщение ge имеет элемент array2 , и иногда он не завершается, потому что не является обязательным.

Когда он не завершается, у меня появляется следующая ошибка:

com.jayway.jsonpath.PathNotFoundException: No results for path: $['payload']['array1'][0]['array2'][0]['elemOfArray2']
  1. Разве я не должен получить null?
  2. если нет, как я могу получить нулевое значение, когда путь не завершается?
...