Максимальный уровень глубины десериализации Джексона - PullRequest
0 голосов
/ 16 ноября 2018

С приложением Spring Boot Я публикую JSON с 10000 вложенными элементами, как показано ниже, и получил java.lang.StackOverflowError.

{
"__id": "1",
"__category":{
      "key1": {
        "key2": {
            "key3": {
                ...
                ...
                "key10000": "value"
                ...
                ...
            }
        }
      }
    }
}

Есть ли способ сделать эту ошибку более управляемой?

Я имею в виду, я не хочу избегать этой ошибки, но сделайте что-то вроде настраиваемого десериализатора, чтобы установить допустимое значение вложенности и выдать какое-то исключение, если это значение превышено.

1 Ответ

0 голосов
/ 17 ноября 2018

Вы можете попробовать использовать Jackson Streaming API вместо того, чтобы десериализовать все сразу. Это рекомендуемый подход при работе с большим объектом или массивом JSON.

Это позволяет вам десериализовать и обрабатывать компоненты по отдельности без необходимости существования всего объекта JSON в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...