Проблема пути JSON

Я использую версию 2.4.0 библиотеки json-path com.jayway.jsonpath. Я пытаюсь разобрать недопустимый документ, но не получаю исключения. Код такой

this.json= Configuration.defaultConfiguration().jsonProvider().parse(document);

Значение переменной документа, переданной в метод синтаксического анализа, равно «notvalidjson». Однако вызов возвращает штраф, назначая строку «notvalidjson» элементу json Object. Это ожидаемое поведение? Я ожидал, что будет выброшено исключение InvalidJsonException.

Спасибо, Пол.


person ceepan    schedule 18.02.2019    source источник
comment
По умолчанию эта конфигурация будет использовать JsonSmartJsonProvider, который, согласно моему опыту, сообщает об ошибках не во время синтаксического анализа, а во время оценки (когда вы пытаетесь получить доступ к свойству). Вместо этого вы можете попробовать использовать JacksonJsonProvider (или GsonJsonProvider), который выдал исключение уже во время синтаксического анализа.   -  person Roman Vottner    schedule 18.02.2019
comment
Спасибо за быстрый ответ. Я пытаюсь использовать JacksonJsonProvider. Однако я вижу проблему, которой не было при использовании JsonSmartJsonProvider по умолчанию. Я получаю ClassCastException с сообщением java.util.ArrayList не может быть приведен к net.minidev.json.JSONArray, если я пытаюсь сделать JSONArray res = JsonPath.read(document, selector); Документ представляет собой LinkedHashMap, возвращенный, как указано выше.   -  person ceepan    schedule 18.02.2019
comment
Удалось исправить это, а не использовать JSONArray res = JsonPath.read(document, selector); Я использовал JSONArray res = JsonPath.parse(document).read(selector, JSONArray.class);   -  person ceepan    schedule 18.02.2019


Ответы (1)


Удалось исправить это, а не использовать JSONArray res = JsonPath.read(document, selector); Я использовал JSONArray res = JsonPath.parse(document).read(селектор, JSONArray.class)

person ceepan    schedule 19.02.2019