ObjectMapper.readTree не генерирует IOException при неверном вводе - PullRequest
3 голосов
/ 07 ноября 2019

Я использую данные Джексона 2.9.10. В соответствии с документацией говорится:

Если возникнет проблема с синтаксическим анализом (недопустимый JSON), будет выдано исключение JsonParseException

См .: ObjectMapper.readTree

У меня есть следующий тест:

    // Given
    String invalidJson = new POJONode("}{").toString();
    final InputStream mockInputStream = new ByteArrayInputStream(invalidJson.getBytes());

    // When
    myLambda.handleRequest(mockInputStream, mockOutputStream, mockContext);

    // Then
    Expect some stuff to happen in the catch JsonProcessingException bit

Однако readTree преобразует его в TextNode и не выдает исключение ...

Отладка: enter image description here

Как настроить ObjectMapper для выдачи неверного ввода?

1 Ответ

0 голосов
/ 07 ноября 2019

Когда вы печатаете переменную invalidJson, вы увидите "}{", который на самом деле является действительным JSON в соответствии с json.org . Вы также можете подтвердить это с помощью некоторых веб-инструментов, таких как jsonformatter . Парсер сгенерирует исключение, когда вы непосредственно установите переменную invalidJson в эту строку:

String invalidJson = "}{";

Вы должны увидеть:

Exception in thread "main" com.fasterxml.jackson.core.JsonParseException: Unexpected close marker '}': expected ']' (for root starting at [Source: (String)"}{"; line: 1, column: 0])
 at [Source: (String)"}{"; line: 1, column: 2]
...