Я использую 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']
- Разве я не должен получить null?
- если нет, как я могу получить нулевое значение, когда путь не завершается?